【发布时间】:2012-05-08 19:09:37
【问题描述】:
谁能解释一下这个病态的巫术:
System.out.println(("a".equals("a"))); //true
System.out.println(("a".equals("а"))); //false
System.out.println(("Joachim Garraud" == "Joachim Garraud")); //true
System.out.println(("Joachim Garraud" == "Joаchim Garraud")); //false
System.out.println(("Joachim Garraud".equals("Joаchim Garraud"))); //false
System.out.println(("Joachim Garraud".equals("Joachim Garraud"))); //true
我不知道这里发生了什么,但我发誓我得到了这些结果。我真的看不出有什么区别,而且结果是一致的 - 当我复制“假行”时,我再次得到假,反之亦然。
【问题讨论】:
-
尝试再次运行它,看看你得到了什么。他们都应该是
true。 -
如果这不只是您在欺骗我们,请提供一些有关使用的 JVM 的信息。还可以尝试使用 UTF-8 之类的 unicode 编码将字符串转换为字节数组,然后比较这些数组。
-
对不起,你的结果根本不可能。
-
@Stephen,我愿意回溯我的答案,但
"a".equals("a")怎么可能是假的? -
@WATTOStudios - 我的回答给出了一种可能的解释。
标签: java string boolean equals