我们经常在使用for循环的时候有死循环的情况,但是我们这次的这个陷阱很浅,但是很容易掉进去。下面我们就开看看我们的陷阱吧。

在使用Integer的时候,经常会使用到他的最大值,我们循环到最大值的时候停止循环,但是因为这一点让我们掉进陷阱的,这个陷阱就是当一个变量i为Integer.MAX_VALUE;当我们们在给它进行加1操作的时候,我们会发现它的值立马回变为Integer.MIN_VALUE;我们来看看下面的代码就知道了。

public class Test { public static int END = Integer.MAX_VALUE; /* public static final int START = END - 100; public static void main(String[] args) { int count = 0; for (int i = START; i <= END; i++) count++; System.out.println(count); }*/ public static void main(String[] args) { END = END+1; //判断是否是最小值 if(END == Integer.MIN_VALUE) System.out.println("MIN---> "+END); //打印出来的结果为: MIN---> -2147483648 } } 这个例子就可以说明上面我说的那条结论。下面我们就来看看那个完整for循环的吧。

public class Test { public static int END = Integer.MAX_VALUE; public static final int START = END - 100; public static void main(String[] args) { int count = 0; for (int i = START; i <= END; i++) count++; System.out.println(count); } /* public static void main(String[] args) { END = END+1; //判断是否是最小值 if(END == Integer.MIN_VALUE) System.out.println("MIN---> "+END); //打印出来的结果为: MIN---> -2147483648 }*/ }
这段代码不会打印出来任何的东西,因为它的for循环已经是一个死循环了。所以后面的打印语句是根本都不会打印出来的,这个小细节大家一定要注意。如果我们把“<=” 的写成“<”就不会出现上面的情况了,所以注意细节问题,我们就会在代码开发中避免好多的问题。