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?

下一篇: How do I convert from int to String?