不可思議的死循環(一)

我們一般都要在代碼中都是要避免死循環的,但是今天我要讓大家把下面的for循環代碼變成一個死循環,這有點不可思議吧,哈哈。我們的要求死循環的代碼如下:

while (i <= j && j <= i && i != j) {
}
我們要上面的代碼變成一個死循環,感覺是不是 有點不可思議吧,我們發現要想i<=j&&j<=i這個就只有i=j了吧?但是後面又有一個條件就是i!=j,這頓時給我們當頭一棒,我們還有什麼辦法來讓這個變成一個死循環嗎?問題既然能夠被提出來我們就可以找到解決問題的辦法。我們知道即使生成兩個相同的對象,他們進行“==”比較的時候返回的值始終爲false,我們就可以利用進行這個上面的那個while循環了。我們可以想到我們經常使用的Integer,我們可以定義兩個一樣的Integer對象。下面我們來看下面的代碼可以讓上面的while循環變成一個死循環。

package test32;

public class test01 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Integer i = new Integer(1);
		Integer j = new Integer(1);
		//上面的代碼可以滿足,i<=j && j<=i,也就是i==j
		if(i<=j && j<=i)
		{
			System.out.println("i<=j && j<=i :" + "true");
		}
		else
		{
			System.out.println("i<=j && j<=i :" +"false");
		}
		System.out.println("----------分割線-------------");
		
		if(i!=j)
		{
			System.out.println("i!=j :"+"true");
		}
		else
		{
			System.out.println("i!=j :"+"false");
		}
		/*
		 * 我們運行上面的代碼括得到下面的輸出結果:
		 * 		i<=j && j<=i :true
		 *		----------分割線-------------
		 *		i!=j :true
		 *我們發現兩次運行的結果的都是true
		 *這樣就滿足我們死循環的條件了。它永遠都是true。
		 *
		 */
		
	}

}

像這樣的問題 ,我們其實在編程中很少用到的。但是這個在面試護着筆試的時候就很容易的被問到,當時可能會盟了,所以我們就要平時多積累這樣的小問題,到面試或者筆試的時候就會迎刃而解了。


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