在Java開發中常用到For循環,它對簡化業務處理,提高效率,非常有幫助。但要防止程序算法中可能導致死循環的情況,而且有的死循環還不好察覺。比如下面這個例子,算法極容易認為是50,實際上是無窮大的一個死循環。
public class CycTest { /** * @param args the command line arguments */ public static void main(String[] args) { int end = Integer.MAX_VALUE; //定義個循環終止數,可以無限大,區別於int型。 int start = end-50; //定義起始值int count = 0; //初始值for(int i=start;i<=end;i++){ //循環體count++; //循環計數System.out .println("本次循環次數為:"+count); //輸出} } }
輸出結果:
run: 本次循環次數為:1 本次循環次數為:2 本次循環次數為:3 ...... 本次循環次數為:49 本次循環次數為:50 本次循環次數為:51 ......
總結:
可能有人認為輸出結果會是50次,實際上這是個死循環。 end是無限大的數,i<=end也就是無限大的數。所以說是無極限的。 for(int i=start,i<end;i++),結果就是50了。 i<end,表示邊界值不能是一個無窮大致, 而從start到end也就變成了一段區間了,區間就是50。所以開發中考慮到各種數據類型的取值範圍,特別是條件判斷及邊界取值時。