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