特殊字符上的Java字符相等

问题描述 投票:0回答:1

我试图获得'ü'=='ü'的等式。如果我这样写(返回),则返回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()有效。我真的很想知道为什么相等有效,而==不能有效?

java char character equals
1个回答
0
投票

我对此行为的回答是==执行参考比较。

尝试在直线上设置断点

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

通过检查charset[i]mustContain.get(j),您会发现对于特殊字符,引用是不同的,结果是:false。

© www.soinside.com 2019 - 2024. All rights reserved.