Java中一個for語句導(dǎo)致無窮大死循環(huán)的例子
在Java開發(fā)中常用到For循環(huán),它對簡化業(yè)務(wù)處理,提高效率,非常有幫助。但要防止程序算法中可能導(dǎo)致死循環(huán)的情況,而且有的死循環(huán)還不好察覺。比如下面這個例子,算法極容易認(rèn)為是50,實際上是無窮大的一個死循環(huán)。
public class CycTest { /** * @param args the command line arguments */ public static void main(String[] args) { int end = Integer.MAX_VALUE; //定義個循環(huán)終止數(shù),可以無限大,區(qū)別于int型。 int start = end-50; //定義起始值 int count = 0; //初始值 for(int i=start;i<=end;i++){ //循環(huán)體 count++; //循環(huán)計數(shù) System.out.println("本次循環(huán)次數(shù)為:"+count); //輸出 } } }
輸出結(jié)果:
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é)果會是50次,實際上這是個死循環(huán)。end是無限大的數(shù),i<=end也就是無限大的數(shù)。所以說是無極限的。for(int i=start,i<end;i++),結(jié)果就是50了。i<end,表示邊界值不能是一個無窮大致, 而從start到end也就變成了一段區(qū)間了,區(qū)間就是50。所以開發(fā)中考慮到各種數(shù)據(jù)類型的取值范圍,特別是條件判斷及邊界取值時。
相關(guān)文章
Java虛擬機JVM之server模式與client模式的區(qū)別
這篇文章主要介紹了Java虛擬機JVM的client模式和Server模式兩者的區(qū)別和聯(lián)系2017-12-12Java將字符串轉(zhuǎn)化為數(shù)組的兩種方法
Java中的String類是一種特殊的字符串,它可以被用于處理字符串,Java中的String類也可以將字符串轉(zhuǎn)換為數(shù)組,下面這篇文章主要給大家介紹了關(guān)于Java將字符串轉(zhuǎn)化為數(shù)組的兩種方法,需要的朋友可以參考下2023-05-05JDK8配置環(huán)境變量的bat文件的詳細(xì)教程
這篇文章主要介紹了JDK8配置環(huán)境變量的bat文件,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07