0

私の問題は次のコードに隠されています:

public class saturo { 
     public String primer, d;
     public void start() {
         primer = "545640";
         //d = "0";
         d = String.valueOf(primer.charAt(((primer.length())-1)));

         if(d == "0"){
             System.out.println("This is equal: d == " + d);
         }else{
             System.out.println("This is not equal: d == " + d);
         }
         }
        public static void main(String args[]) {
            new saturo().start();
        } 
    }

ご覧のとおり、問題は、文字列 d を "0" として宣言すると、プログラムは d が "0" に等しいのでそれを実行してtrue;を返すことです。

しかし、文字列から文字「0」を取得し、それを文字列に変換し、これが「0」に等しいかどうかを確認すると、false.

文字エンコードに問題があるかどうかを確認しましたが、いずれにしても正しいです。タイプの不一致はありません。

これのどこにロジックがありますか?

4

2 に答える 2

0

use .equals not == 値ではなく参照で比較しています

于 2015-03-29T21:57:31.703 に答える
0

2 つの文字列の値を比較する場合は、使用する必要があります。.equals()

したがって、次のようにします。

if(d.equals("0"){
 // your code here
}

==文字列の値を比較する参照 (メモリ内の同じ場所) によって文字列を比較.equals()します。

于 2015-03-29T21:57:46.873 に答える