Aji*_*kya 3 java int primitive byte for-loop
我试图在for循环中使用byte作为控制循环变量.我使用条件为n <128(其中128超出字节范围)
for (byte n =0; n < 128 ; n++) System.out.println("I am in For loop. "+ n );
Run Code Online (Sandbox Code Playgroud)
并且循环无限地从0到127然后-128到127.
当我尝试用int做同样的事情.它给出了错误.
for (int n = 0; n < 2147483648; n++)
Run Code Online (Sandbox Code Playgroud)
int类型的文字2147483648超出范围
为什么java没有检查类型与Byte的兼容性,就像检查Int一样?
不会根据循环变量的类型检查类型兼容性.
始终是没有后缀的整数文字的类型int.128是有效的int,所以第一个循环通过编译但导致数字溢出导致无限循环.
另一方面,2147483648它不是有效的int,所以第二个循环不通过编译.如果替换2147483648为longliteral(2147483648L),则第二个循环也将通过编译.