黑马程序员技术交流社区

标题: 不懂的问题 [打印本页]

作者: 米老鼠    时间: 2015-10-22 00:34
标题: 不懂的问题
public class test {

public static void main(String[] args) {
int count=0;
while(count<5)
{
System.out.println(count);
count--;
}
System.out.println("right");
}
}


我一直觉得这个应该是应该有有尽头的,因为count的类型的是int,也就是说最小只能到-32767就结束了,但是为什么会出现死循环呢?一直没有想明白,我用电脑试过了,的确是死循环,但是心理上还是过不去,难道这是java不够科学的地方,各位大牛帮忙解答一下可以吗?
作者: polarfox17    时间: 2015-10-22 01:46
好像是会从int最小值负的那个值直接跳到int的最大值再继续减减,如此这样一个死循环,我也拿不太准
作者: 朦胧色彩    时间: 2015-10-22 08:44
不是死循环的,应该是你没看到最后
  1. // int的取值范围:-2147483648 ~ 2147483647
  2.                 int count = -2147483000;
  3.                 while (count < 5) {
  4.                         System.out.println(count);
  5.                         count--;
  6.                 }
  7.                 System.out.println("right");
复制代码

最后会输出right的。
作者: SF_NEVERMORE    时间: 2015-10-22 09:19
换成short试试?
作者: Manper    时间: 2015-10-22 10:20
你所说的到-32767count类型应该是short。short的取值范围是-32768-32767之间。而你程序中的count类型是int,就像前面一个兄弟说的那样取值范围-2147483648 ~ 2147483647太大了。所以你一直以为是死循环。
作者: 耀阳圣尊    时间: 2015-10-22 10:32
2楼四楼正解!
作者: 米老鼠    时间: 2015-10-23 06:58
polarfox17 发表于 2015-10-22 01:46
好像是会从int最小值负的那个值直接跳到int的最大值再继续减减,如此这样一个死循环,我也拿不太准 ...

从负转正如此循循环环下去?
作者: 米老鼠    时间: 2015-10-23 07:00
耀阳圣尊 发表于 2015-10-22 10:32
2楼四楼正解!

明白了  谢谢大神
作者: 米老鼠    时间: 2015-10-23 07:01
朦胧色彩 发表于 2015-10-22 08:44
不是死循环的,应该是你没看到最后

最后会输出right的。

谢谢abcdef
作者: 米老鼠    时间: 2015-10-23 07:03
Manper 发表于 2015-10-22 10:20
你所说的到-32767count类型应该是short。short的取值范围是-32768-32767之间。而你程序中的count类型是int ...

恩恩,知道了
作者: 叶发伟    时间: 2015-10-23 11:39
你就每次都输出count的值看看不就知道咯
作者: 土豆丝    时间: 2015-10-23 12:39
没有死循环哦,int的取值范围是-2^31~2^31-1,只不过这个值有点大。
作者: polarfox17    时间: 2015-10-23 13:39
耀阳圣尊 发表于 2015-10-22 10:32
2楼四楼正解!

这个真的是从最小的负数然后直接跳到最大的正数再继续减减的嘛?
作者: 费斯    时间: 2015-10-23 16:20
学到了!!
作者: sharplance    时间: 2015-10-23 16:25
你可以运行这段代码看一下,打印的结果是2147483647,和二楼说的一样。
public class IntRange {

        public static void main(String[] args) {
                int a = -2147483648;
                System.out.println(a-1);
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2