加1的陷阱

我们经常在使用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循环已经是一个死循环了。所以后面的打印语句是根本都不会打印出来的,这个小细节大家一定要注意。如果我们把“<=” 的写成“<”就不会出现上面的情况了,所以注意细节问题,我们就会在代码开发中避免好多的问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章