类型隐式转换
byte、short、char类型数据在运算时(+、-、*、/、%...)会进行隐式转换成int。例如:
byte a = 3;
byte b = 4;
byte c = a+b;
错误,a+b在运算时会转换为int型,将int型赋值为byte型,大转小,需要强制转换,(byte)(a+b)
short s = 1;
s = s+1;
错误,s+1在运算是会转换为int型,同上
Java存在常量优化机制
byte c = 3 + 4;
按照上述的类型隐式转换,3+4结果应该为int型,大转小,应该错误,但是由于Java存在常量优化机制。在编译的时候,3+4会进行运算,导致字节码文件中为byte c = 7;
,因而不会报错。
扩展赋值运算符(+=、-=、*=、/=、%=)在运算时自带强制转换
short s = 1;
s += 1;
正确,s = s+1;
是错误的。上述底层是s = (short)(s+1);
故正确。
运算符
异或运算符(^)
相同为false,不同为true。
短路与(&&)和短路或(||)
短路与&&:左边为false,右边不执行,直接结果为false。
短路或||:左边为true,右边不执行,直接结果为true。
比起&、|运算符,更加高效,因而更加常用。
运算符的优先级
&&优先级大于||,但实际开发中不用特意记忆,只要用()来提升优先级就好了。
标签:short,Java,运算,int,day01,运算符,byte From: https://www.cnblogs.com/aimengxi/p/18090444