我试图在 for 循环中使用字节作为控制循环变量。我使用条件为 n for (byte n =0; n < 128 ; n++) System.out.println("I am in For loop. "+ n );循环从 0 到 127 无限循环,然后从 -128 到 127。当我尝试对 int 做同样的事情时。它给出了错误。for (int n = 0; n < 2147483648; n++)int 类型的文字 2147483648 超出范围为什么java不像检查Int那样检查与Byte的类型兼容性? 最佳答案 不会根据循环变量的类型检查类型兼容性。没有后缀的整数文字的类型总是 int 。 128 是一个有效的 int ,所以第一个循环通过编译但导致数字溢出导致无限循环。另一方面, 2147483648 不是有效的 int ,因此第二个循环不会通过编译。如果将 2147483648 替换为 long 文字( 2147483648L ),则第二个循环也将通过编译。关于java - 为什么 Java 没有检查 byte 的类型兼容性,因为它会随着 int 消失?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46764385/