不思議な死のサイクル(一)
私たちは普通コードの中で死の循環を避けなければなりませんが、今日は次のfor循環コードを死の循環に変えさせます.これは少し不思議でしょう.ハハ.デッドサイクルを要求するコードは次のとおりです.
上のコードがデッドサイクルになるのは不思議ではないでしょうか.i<=j&&j<=iと思うのはi=jだけでしょうか.しかし、後にもう一つ条件があるのはi!=j、これはすぐに私たちに先頭に立って、私たちはこれを死の循環に変える方法がありますか?問題が提起される以上、私たちは問題を解決する方法を見つけることができます.2つの同じオブジェクトが生成されても、彼らが"=="比較を行うときに返される値は常にfalseであり、私たちはこの上のwhileループを利用することができることを知っています.私たちがよく使うIntegerを考えることができ、同じIntegerオブジェクトを2つ定義することができます.次のコードは、上のwhileループをデッドループにすることができます.
このような問題は、プログラミングではあまり使われていません.しかし、これは面接で筆記試験を保護しているときに簡単に聞かれます.その時は同盟するかもしれません.だから、私たちは普段からこのような小さな問題を蓄積しなければなりません.面接や筆記試験の時になったら、すぐに解決します.
while (i <= j && j <= i && i != j) { }
上のコードがデッドサイクルになるのは不思議ではないでしょうか.i<=j&&j<=iと思うのはi=jだけでしょうか.しかし、後にもう一つ条件があるのはi!=j、これはすぐに私たちに先頭に立って、私たちはこれを死の循環に変える方法がありますか?問題が提起される以上、私たちは問題を解決する方法を見つけることができます.2つの同じオブジェクトが生成されても、彼らが"=="比較を行うときに返される値は常にfalseであり、私たちはこの上のwhileループを利用することができることを知っています.私たちがよく使うIntegerを考えることができ、同じIntegerオブジェクトを2つ定義することができます.次のコードは、上の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。 * */ } }
このような問題は、プログラミングではあまり使われていません.しかし、これは面接で筆記試験を保護しているときに簡単に聞かれます.その時は同盟するかもしれません.だから、私たちは普段からこのような小さな問題を蓄積しなければなりません.面接や筆記試験の時になったら、すぐに解決します.