复习试题:运算符以及类型的强制转换

来源:互联网 发布:强直性脊柱炎 知乎 编辑:程序博客网 时间:2024/06/05 09:10






byte a = 3 + 5; //byte a = 8 ;

int b = 3, c = 5;
byte d = b + c; //b+c的结果是int类型,无法赋值给byte类型的d。  正确过程是:byte d = (byte)(b+c); d = 8 ;
byte e = 10, f = 11;
byte g = e + f; //e+f运算时转换成了int类型,要想再赋值给byte类型g,必须使用强转。正确过程:byte g =(byte)(e+f); g = 21 ;
byte h = (byte) (e + f); //byte h = 21 ;




byte a = 1;
byte b = 2;
a = a+b;    //a+b运算时转换成了int类型,想要再赋值给byte类型a,必须使用强制转换。正确过程:a = (byte)( a+b ); a = 3 ;
a += b;      //a = 5 ;




byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6; 
b6=b4+b5; //b6=10;final修饰的变量不可改变
b3=(b1+b2);    //b1+b2运算时转换成了默认int类型,想要再赋值给byte类型b6,必须使用强制转换。正确过程:b3=(byte)(b1+b2); b6 = 3 ;
System.out.println(b3+b6); //b3 + b6 = 13 ;


Java核心技术中有这样一句话:
当使用数值进行二元操作时(+, -, *, /),先要将两个操作数转换为同一类型,然后再进行运算。
1.如果两个操作数中有一个是double类型的,另一个操作数就会转换为double类型。
2.否则,如果其中一个操作数是float类型的,另一个操作数将会转换为float类型。
3.否则,如果其中一个操作数是long类型的,另一个操作数将会装换为long类型。
4.否则,两个操作数都将转换为int类型。


所以byte b = c + d,c和d都将转换为int类型的再参加运算,所以结果是int类型的,再赋值给byte类型的b时,就会出错,必须要使用强制类型转换。


运算符的优先级



原创粉丝点击