加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循環已經是一個死循環了。所以後面的打印語句是根本都不會打印出來的,這個小細節大家一定要注意。如果我們把“<=” 的寫成“<”就不會出現上面的情況了,所以注意細節問題,我們就會在代碼開發中避免好多的問題。

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