先来看几个例子
int a=1;
byte b1=1+a;//error
byte b2=1+1;//ok
byte b3=1+127;//error
byte b4=1+126;//ok
int x=1l+2l; //error,1,2为long型
int b=1;
short s1=2+b;//error
short s2=3+2;//ok
int c=2.3f+3.2f;//or
float d=3.3+3.2;//error
总结: 虚拟机对默认类型int型有优待:当右边类型都是int型,而且只做一次运算(变量赋值已经算一次运算了),
虚拟机会先尝试窄转换,如果超出左边类型范围就报错,没超出就通过。
但是默认类型double和其他基本类型就没有这样的待遇了。
|