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