【发布时间】:2013-01-28 00:15:52
【问题描述】:
在 Java 中,我可以像这样在块内分配 short 或 byte:
short s = 20000;
byte b = 120;
因为 20000 是 short 值,而 120 是 byte 值,如果我尝试尝试:
short s = 67000;
byte b = 128;
我会收到一个错误,指出它无法从 int 编译到 byte where
byte b = (byte)12232;
甚至不会触发值可能丢失的警告。在函数调用中,无论如何我都必须强制转换它:
void test(short s){}
test(1) //invalid
test((short)1) //valid
在return 输入时再次正常。
short test(){
return 1; //valid
}
为什么编译器有时想知道数字的范围(至少从常量中),而它似乎在别处忘记了?
【问题讨论】:
-
@assylias 一个很好的发现,你记住了所有的 java 问题吗? +1
-
呃,我也没有找到这个问题:)
标签: java compiler-construction compiler-optimization short