byte x = 5;
byte z = x - 2;
byte y = 5 - 1;上面的合法,下面的不合法。为什么啊?
下面的不合法的原因是 x 跟 整数 2 进行计算的时候,都转化为了 int类型,将 int型的计算结果赋值给 byte类型的z时,非法。那么我要问的是,难道第一个赋值的时候,5 不是当整数处理的吗?? 好那么就算如此。又怎么解释 第三行的赋值却又是合法的呢???
求高人指点。
byte z = x - 2;
byte y = 5 - 1;上面的合法,下面的不合法。为什么啊?
下面的不合法的原因是 x 跟 整数 2 进行计算的时候,都转化为了 int类型,将 int型的计算结果赋值给 byte类型的z时,非法。那么我要问的是,难道第一个赋值的时候,5 不是当整数处理的吗?? 好那么就算如此。又怎么解释 第三行的赋值却又是合法的呢???
求高人指点。
是变量 java就这么规定 没有那么多为什么 记住就行
byte z = x - 2;//x是个变量,编译器无法判断结果是什么。且byte和int做操作的时候,结果是int
byte y = 5 - 1;编译的时候已经把5-1做掉了,等价于byte y = 4;编译器也知道4能在byte中放得下
4的话,编译器可以判断,并自动转成byte。byte z = x - 1;
编译期间判断不了,所以直接报错。强制转换可以。
byte z = (byte)(x - 2);
表达式java在运行期才会去计算