所有的byte型,short型和char型自动被提升成int型
如:byte a=1(正确) byte b=2(正确) byte c=a+b(错误)因为此时的a,b已经是int型,大类型不能赋值给小类型
在进行运算时,容量小的类型自动转化成容量大的类型
如:float a=5.0*2(在运算时会先把int型2转化成浮点型,再运算)
boolean类型不能转换成其他的数据类型,因为boolean只有true,false两个值,没别的(理由完全个人所想)
实数常量(如1.2)默认为double,如要声明一个常量为float,应在后面加f或F 如:float a=1.2F;
整数常量(如123)默认为int,声明long型常量可以后加l或L 如:long a=123L;
移位运算符:
1.<< 左移位运算符,相当于乘2操作,效率高
2.>> 右移位运算符,相当于除2操作,效率高,移动时符号位不变
3.>>> 右移位运算符,以0填充最高位,所以如果是负数运算,结果就是正数,正数运算,结果不变
4.& 按位与,先将两个字数转化为二进制码,只有都是1时结果才是1,有一个0结果就为0 如:10&12 = 1010&1100 = 1000 = 8
5.| 按位或,先转化成二进制码,只有都是0,结果才是0,有一个1,结果就是1 如:10|12 = 1010|1100 = 1110 = 14
6.^ 异或,先转化成二进制码,当两个数相同时为0,不同为1 如:10^12 = 1010^1100 = 0110 = 4
注:&&和&的区别:
1.&&是逻辑运算符,操作必须是boolean值或boolean表达式,&是位运算符,操作数可以是boolean值,也可是以数字。
2.&&是短路运算符,当第一个条件为假,第二个条件就不会执行,&不是短路运算符,当第一个条件为假时,第二个还是会执行
1.点 () {}
2.一元运算符(++,--,!,(类型转换))
3.算术运算符(+ - * / %)
4.移位运算符(<< >> >>>)
5.比较运算符(> < >= <= ==)
6.位运算符(& | ^)
7.逻辑运算符(&& ||)
8.赋值运算符(= += -= 三目运算)