可能重复:
Why int i = 2147483647 + 1; is ok, but byte b = 127 + 1; is not compilable?
我是java的初学者所以请欣赏这个初学者的问题。但是为什么我的编译器不适用于字节b = 127 + 1;但用int i = 2147483647 + 1编译好;
答案 0 :(得分:2)
你的编译器抱怨,因为它看到两个整数被加在一起(int 127)和(int 1),然后它担心一些精度会在尝试将结果(int 128)存储到一个字节时丢失。
您选择的数字往往暗示您认为它与溢出有关。它不是,因为即使在编程时保持溢出很重要,编译器也不会抱怨溢出问题。
答案 1 :(得分:1)
因为当编译器看到127时,它将其视为int,而不是字节。你需要一个强制转换来使结果适合一个字节。