簡體   English   中英

特殊字符上的 Java 字符相等

[英]Java Character Equality on Special Character

我試圖獲得 'ü' == 'ü' 的相等性。 如果我這樣寫(在sout中),這將返回true。 但在我的代碼中:

static Character[] charset = {'ü'};

    public static void main(String[] args) {
        ArrayList<Character> mustContain = new ArrayList<>();
        mustContain.add('ü');
        ArrayList<Character> removal = new ArrayList<>();
        for (int i = 0; i < charset.length; i++) {
            for (int j = 0; j < mustContain.size(); j++) {
                if(charset[i] == 'ü' && mustContain.get(j) == 'ü') {
                    System.out.println(charset[i] instanceof Character);
                    System.out.println(mustContain.get(j) instanceof Character);
                }
                if(charset[i] == (mustContain.get(j))){
                    System.out.println("added");
                    removal.add(mustContain.get(j));
                }

            }
        }

        System.out.println(Arrays.toString(removal.toArray()));
    }

這是結果:

true
true
[]

我希望得到的是:

true
true
added
[ü]

我只能用charset[i].equals(mustContain.get(j))

但是對於字符 'a' 代碼一切正常,== 和 .equals() 都返回 true。 對於 'ü' 只有 .equals() 有效。 我真的想知道為什么 equals 有效而 == 無效?

我對這種行為的回答是==執行引用比較。

嘗試在該行設置斷點

if(charset[i] == (mustContain.get(j))

通過檢查charset[i]mustContain.get(j)您將看到對於特殊字符的情況,引用是不同的,這給出了結果:false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM