JAVASE基础部分之二---------常量与变量、运算符、程序流程控制

来源:互联网 发布:爱青岛网络公开课 编辑:程序博客网 时间:2024/04/30 07:00

数据类型:java对于每一种数据定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。


oolean数据类型后面的取值只能有两种:ture和 false

数据类型用long时,取值后面常常加个“l

数据类型演示:

byte b = 2

short s = 30000

long l = 4l

float f = 2.3f

double d = 3.14

char ch = ‘a’   char ch1 = ‘4’  char ch2 = ‘+’   char ch3 = ‘ ’

boolean b0 = ture   Boolean b2 = false

什么时候定义变量:当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。

如:int a = 4;

a = a + 6;

类型转换:不同数据类型发生转换时会有自动提升的过程,表现为小的向大的提升

例:执行语句System.out. println(‘a’+1);的结果是对少?

运算过程为将字符a通过编码表提升到int数据类型得到对应的int数值再与1想加后得到输出结果,即98

如果需要将98转换为字符类型即b,操作就是System.out.println((char)(‘a’+1)),同理c就是System.out.println((char)(‘a’+2))

注意字符与数字之间的+号是运算,而字符串与任何数据之间用+号都是想连接,最后都会变成字符串!

运算符:

算术运算符;赋值运算符;比较运算符;逻辑运算符;位运算符;三元运算符

算术运算符包括 +(正号);  (负号);   *(乘) ; /(除); +(加); -(减);

%(取模);  ++(自增(前)); --(自减(后)); +(字符串相加)

例:int x = 4270;

x = x / 1000 * 1000

结果是4000,注意数据类型!

取模规则:右边是1结果是0 ; 左边如果小于右边结果是左边;如果出现负数则结果是左边。

例:int a = 3,b;

b = a++

则结果是b=3a=4

注意:++叫做给a这个变量中的值进行一次加1操作,并把加1后的值赋给ab = a++的运算过程是把a的值赋给b,然后a自增;b = ++a的运算过程是a先自增再将自增后的值赋给b,即a = 4 b = 4

例:只用字符5打印5+5=55 5+5=10

答案是System.out.println(“5+5=”+5+5) 和 System.out.println(“5+5=”+(5+5))

转义字符:通过\来转变后面字母或符号的含义,注意其中的字母或符号是指定的

\n:换行 

\b:退格,相当于backspace

\r:按下回车键。Windows系统。回车符由两个字符来表示\n\r

\t:制表符,相当于tab

例:System.out.println(“hello \nworld”);----àhello

 world

System.out.println(“\”hello world\””);----à”hello world”

System.out.println(“\\hello world\\”);-----à\hello world\

char ch = ‘\n’--------------------------------à回车键

char ch = ‘\’’--------------------------------à’

赋值运算符包含   =        +=      -=       *=        /=        %=

+=:把左右两边的和赋给左边

以此类推

这些都是一个符号哦

例:a = a + 5 与 a+=5 的区别

a = a + 5 是两次运算,右边先做完加法运算后再将值赋给左边,可能会有个自动类型提升的过程,a+=5只是一次赋值运算,如

short a = 4;

a = a + 5;

会编译失败,而

short a = 4;

a+=5;

则编译通过。

比较运算符包含  >        =         <        >=        <=       ==          !=

==”是相等于;“!=”是不等与

比较运算符的结果只有两种:ture 或者 false

逻辑运算符包含  &;      ;        ;        ;          &&            ||

意义:连接布尔类型的表达式,如数学表达式3<x<6java里面的表达式为x>3&x<6;

&  :与,只要布尔表达式结果有一个为false,那么结果就是false,只有两边都是ture就过才是ture

|   :或,只要布尔表达式结果有一个为ture,那么结果为ture,只有两边结果都有false,结果为false

^   :异或,两边相同结果是false,两边不同结果是ture

!   :非,

&& and短路,左边布尔表达式为false时,右边不运算,只有左边结果为ture是才读右边

||   or短路,当左边为ture是,右边不运算,结果肯定为ture

位运算符包含     <<      >>     >>>       &         |          ^          ~

<<  :左移。移动的时候空缺补0,其实就是乘以2的移动的位数次幂。

>>  :右移。移动的时候空位由原有数据的最高位而定,如果最高位是0,右移后用0补,如果最高为是1,右移后用1补,就是除以2的移动的位数次幂。

>>>:无符号右移。右移的时候无论最高位是什么都用0补。

&:与

:或

:异或

: 反码

细节:一个数异或同一个数两次,结果还是那个数。

练习:

最有效的方式算出2*8等于几?

System.out.println(2<<3),即将2左移三位

将两个整数变量的值进行互换

1:通过第三方变量

int n = 3, m = 4,z;

z = m;

m = n;

n = z;

System.out.println(“m=”+m +”,n=”+n);

2(有局限性,如果mn的值非常大,容易超出int范围)

int n = 3,m = 4;

n = n + m;

m = n – m;

n = n – m

System.out.println(“m=”+m+”,n=”+n);

3:异或法

int n = 3,m = 4;

n = n ^ m;

m = n ^ m;

n = n ^ m;

System.out.println(“m=”+m+”,n=”+n);

例:打印60的十六进制表现形式

思路:


解法:

int num = 60;

//获取60的最低四位,通过&15,即60&1111(15的二进制)

int n1 = num & 15

System.out.println((char)(n1–10+‘A’));

//获取下一组四位,将60右移四位

int n2 = num>>>4;//>>>是要将原有的数据移光

//n2的值进行最低四位获取

int n3 = n2 & 15;

System.out.println(n2) ;

三元运算符:三个元素参与的运算

特点:一定有结果

格式         (条件表达式)?表达式1:表达式2;

如果条件为ture,运算后结果是表达式1;如果条件为false运算后的结果就是表达式2

如:int x = 1;y;

y = (x<3)?100:2000;

System.out.println(y);

程序流程控制(语法结构,语句):

判断结构、选择结构、循环结构

判断结构 :

第一种:if语句 

三种格式:

1.if (条件表达式)

{

执行语句;

}

2.if (条件表达式)

{

执行语句;

}

else

{

执行语句;

}

3.if (条件表达式)

{

执行语句;

}

else if (条件表达式)

{

执行语句;

}

……

else 

{

执行语句;

}

注意:if else 结构简写格式:变量 (条件表达式)?(表达式1):(表达式2)

      三元运算符好处在于简化if else 代码,但是也有弊端,因其本身是一个运算符,所以运算必须要有一个结果。

1.如:int x=3;

     if (x<3)

{

System.out,println(“hello world”)

}

2.int x =1;

if (x>3)

{

System.out.println(“hello world”);

}

else 

{

System.out.println(“hello world”);

}

需求1:根据用户数值的不同,打印相应的星期英文。

int x = 2

if (x == 1)

{

System.out.println(“Monday”)

}

else if (x == 2)

{

System.out.println(“Tuesday”);

}

else 

{

System.out.println(“nono”);

}

需求2:根据用户指定月份,打印该月份所属季节。

1:                               

int x = 4

if (x==3 || x==4 || x==5)

{

System.out.println(x+“春季”);

}

else if (x==6 || x== 7 || x==8)

{

System.out.println(x+“夏季”);

}

else if (x==9 || x==10 || x==11)

{

System.out.println(x+“秋季”);

}

else if (x==12 || x==1 ||x==2)

{

System.out.println(x+“冬季”);

}

else

{

System.out.println(x+“月份不存在”);

}

2

int x = 4;

if (x<1 || x>12)

{

System.out.println(x+“月份不存在”);

}

else if (x>=3 && x<=5)

{

System.out.println(x+“春季”);

}

else if (x>=6 && x<=8)

{

System.out.println(x+“夏季”);

}

else if (x>=9 && x<=11)

{

System.out.println(x+“秋季”);

}

else 

{

System.out.println(x+“冬季”);

}

3

int x = 4

switch (x)

{

case 3:

case 4:

case 5:

System.out.println(x+“春季”);

break;

case 6:

case 7:

case 8:

System.out.println(x+“夏季”);

break;

case 9:

case 10:

case 11:

System.out.println(x+“秋季”);

break;

case12:

case1:

case2:

System.out.println(x+“冬季”);

break;

default :

System.out.println(x+“月份不存在”);

}

选择结构:语句格式                                 

switch(表达式

{

case 取值1 :

执行语句;

break;

case 取值 2:

break;

default:

执行语句;

break;

}

注意:被选择的表达式的值只能有4种:

byte     short     int    char

例如:if 表达转换为switch

int x = 4;

if (x==4)

System.out.println("hello java");

else if (x==1)

System.out.println("Hello World!");

else 

System.out.println("hello man");

解法:

class  Switch

{

public static void main(String[] args) 

{

int x = 4;

switch (x)

{

case 4:

System.out.println("hello java");

break;

case 1:

System.out.println("Hello World!");

break;

default :

System.out.println("hello man");

}

}

int a =4,b = 2;

char ch = '+';

switch (ch)

{

case '+':

System.out.println(a+b);

break;

case '-':

System.out.println(a-b);

break;

case '*':

System.out.println(a*b);

break;

case '/':

System.out.println(a/b);

}

break;

default :

System.out.println("非法")

}

注意:

if switch 语句很像;

具体什么场景下应用那个语句呢?

如果判断的具体数值不多,而且符合byteshortintchar 这四种类型。

虽然两个语句都可以使用,建议使用switch语句,因为效率高。

其他情况:对区间判断,对结果为boolean类型判断,使用ifif的适用范围更广。



原创粉丝点击