Java-day01

类型隐式转换

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。

比起&、|运算符,更加高效,因而更加常用。

运算符的优先级

&&优先级大于||,但实际开发中不用特意记忆,只要用()来提升优先级就好了。

posted @ 2024-03-22 21:19  艾梦溪  阅读(2)  评论(0编辑  收藏  举报