Java编译器是否将字节和短文字识别为文字?
我真正要问的是,如果我写:
byte b=13;
short s=14;
然后,右侧的值分别为13和14分别被视为字节和短整型或由编译器将其作为int类型读取。 如果他们分别作为字节和短裤阅读,那么为什么,
byte b1=13;
byte b2=23;
byte b3=b1+b2;
和
short s1=14;
short s2=24;
short s3=s1+s2;
在java中是无效的语句(短s3 = s1 + s2;和字节b3 = b1 + b2;),即使精度在这种情况下也不会受到影响。
如果它们只是被编译器读为int类型,那么它们的身份是如何被编译器维持为字节型或短型的?
Java没有字节或短文字。 它所具有的是当int为编译时间常量并且在目标类型的范围内时,从int到byte,char和short的隐式赋值转换。
所以,这是OK的:
byte b = 13+14; // implicit conversion
但这不是:
void method(byte b) {}
method(13);
不是这样的:
byte b = 13+nonConstant;
你需要投出+
这是一个int
的结果。
byte b1 = 13;
byte b2 = 23;
byte b3 = (byte) (b1 + b2);
short s1 = 14;
short s2 = 24;
short s3 = (short) (s1 + s2);
这是因为编译器专门处理了整型文字(更常见的是int类型的常量表达式)。 当您将整数文字分配给字节或短字符时,编译器会检查它是否在目标类型的范围内,然后允许不带转换的分配。
链接地址: http://www.djcxy.com/p/73633.html上一篇: Does Java compiler recognize byte and short as literals?