gpt4 book ai didi

Java 特殊字符的字符相等

转载 作者:行者123 更新时间:2023-12-02 09:05:59 24 4
gpt4 key购买 nike

我试图获得 'ü' == 'ü' 的相等性。如果我这样写(在 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)) 来获得此等式为 true

但是对于字符“a”,代码一切正常,== 和 .equals() 都返回 true。对于“ü”,只有 .equals() 有效。我真的很想知道为什么 equals 有效而 == 无效?

最佳答案

我对此行为的回答是 == 执行引用比较。

尝试在该行设置断点

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

通过检查 charset[i]mustContain.get(j) 您将看到特殊字符大小写的引用是不同的,这给出了结果:错误。

关于Java 特殊字符的字符相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59024949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com