还有:不报错的原因是这儿是i++ .
如果是i=i+1,应该就会报错了,
刚刚对这个进行测试了,猜想是正确的,这儿i=i+1就会报错,提示丢失精度。
在i=i+1的时候,这个1,会默认为int类型,byte类型加上int类型,要赋值给int类型才行,而这儿的i为byte类型,所以赋值会丢失精度,会报错。
而i++ ,在运算过程中,会直接判断当前i数值以及+1以后的数字是否在byte范围内,如果在,则不会报错。。所以在你那个for循环中,虽然看着好像是127++了,但是并不会报错,不过一样的,丢失了精度,变成了-128 ,变成-128之后,还在byte范围内,所以无论如何,都不会报错。。。这个回复,是回答你,为何不会报错的。
//这里为什么会死循环,也不报错
for(byte i = 0;i<128;i++){
System.out.println(i); |