0

文字列と文字を比較しようとしています(文字列に変換した後)。コードが機能すると思っていたように機能しません。

package main;
import java.lang.Character;

public class Main {
    public static void main(String[] args) {
        char myChar = 'a';
        String myString = "a";
        if(myString == Character.toString(myChar)) {
            System.out.println("This SHOULD work! But it doesn't.");
        } else {
            System.out.println("This SHOULDN'T work! But it does.");
        }
    }
}

ここで何が間違っていますか?

4

4 に答える 4

5

使用する:

if(myString.equals(Character.toString(myChar)))

それ以外の:

if(myString == Character.toString(myChar))

==は、2 つの参照がメモリ内の同じオブジェクトを指しているかどうかをテストし、メソッドは、2 つの参照が同じオブジェクトを指しているかどうか、またはそれらが同じ内容を持っているかどうかをequalsチェックします。

于 2012-06-30T17:29:23.397 に答える
1

文字列の等価性を比較するには、 equals() メソッドを使用します。Java には 2 つの比較方法があります。1 つは「==」演算子で、もう 1 つは「equals()」メソッドです。「==」は文字列オブジェクトの参照値を比較しますが、equals() メソッドは java.lang.Object クラスに存在します。このメソッドは、文字列オブジェクトの内容を比較します。.

したがって、あなたの場合、「==」の場合は代わりに .equals() を使用することをお勧めします。

于 2012-06-30T17:33:05.850 に答える
0

== 演算子を使用して文字列を比較しないでください。ソース コードに埋め込まれた文字列リテラルはこの演算子と比較できますが、このアプローチは文字列オブジェクトでは機能せず、動的に取得されます。

== は、オブジェクトの値ではなく、オブジェクトへの参照を比較するためです。

メソッドを使用String.equals()して文字列オブジェクトを比較します。

于 2012-06-30T17:32:34.390 に答える
0

文字列比較の一般規則:

  • ==参照を比較します (C から来ている場合はある種のポインタ)
  • equals内容を比較します。

あなたの場合、2 つの異なるオブジェクトへの 2 つの異なる参照を比較しているため、false期待する場所に戻っていますtrue。文字列比較には、常にString.equals()メソッドを使用します

于 2012-06-30T19:50:01.103 に答える