Java编译问题

时间:2011-07-31 15:03:40

标签: java compilation

  

可能重复:
  Why int i = 2147483647 + 1; is ok, but byte b = 127 + 1; is not compilable?

我是java的初学者所以请欣赏这个初学者的问题。但是为什么我的编译器不适用于字节b = 127 + 1;但用int i = 2147483647 + 1编译好;

2 个答案:

答案 0 :(得分:2)

你的编译器抱怨,因为它看到两个整数被加在一起(int 127)和(int 1),然后它担心一些精度会在尝试将结果(int 128)存储到一个字节时丢失。

您选择的数字往往暗示您认为它与溢出有关。它不是,因为即使在编程时保持溢出很重要,编译器也不会抱怨溢出问题。

答案 1 :(得分:1)

因为当编译器看到127时,它将其视为int,而不是字节。你需要一个强制转换来使结果适合一个字节。