我們一般都要在代碼中都是要避免死循環(huán)的,但是今天我要讓大家把下面的for循環(huán)代碼變成一個死循環(huán),這有點不可思議吧,哈哈。我們的要求死循環(huán)的代碼如下:
我們要上面的代碼變成一個死循環(huán),感覺是不是 有點不可思議吧,我們發(fā)現(xiàn)要想i<=j&&j<=i這個就只有i=j了吧?但是后面又有一個條件就是i!=j,這頓時給我們當(dāng)頭一棒,我們還有什么辦法來讓這個變成一個死循環(huán)嗎?問題既然能夠被提出來我們就可以找到解決問題的辦法。我們知道即使生成兩個相同的對象,他們進行“==”比較的時候返回的值始終為false,我們就可以利用進行這個上面的那個while循環(huán)了。我們可以想到我們經(jīng)常使用的Integer,我們可以定義兩個一樣的Integer對象。下面我們來看下面的代碼可以讓上面的while循環(huán)變成一個死循環(huán)。
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");
}
/*
* 我們運行上面的代碼括得到下面的輸出結(jié)果:
* i<=j && j<=i :true
* ----------分割線-------------
* i!=j :true
*我們發(fā)現(xiàn)兩次運行的結(jié)果的都是true
*這樣就滿足我們死循環(huán)的條件了。它永遠(yuǎn)都是true。
*
*/
}
}
像這樣的問題 ,我們其實在編程中很少用到的。但是這個在面試護著筆試的時候就很容易的被問到,當(dāng)時可能會盟了,所以我們就要平時多積累這樣的小問題,到面試或者筆試的時候就會迎刃而解了。