java中不同方式的字符串比较差异

brt*_*rtb 3 java string comparison hashmap string-comparison

我有两个字符串,我想我的意思是根据我的眼睛他们是完全相同的.但他们的比较给了我错误的结果.

让我简单解释一下,

String bir = "brescia calcio";
String iki = "brescia calcio?";
 if("brescia calcio".equals("brescia calcio"))
 System.out.println(("deneme"));



HashMap<String, Long> deneme = new HashMap<String, Long>();
HashMap<String, Long> deneme2 = new HashMap<String, Long>();


if (bir.equals(iki)) {
    System.err.println("a");
}
deneme.put(bir, (long) 1);
deneme.put(iki, (long) 2);

deneme2.put("brescia calcio", (long) 3);
deneme2.put("brescia calcio", (long) 4);



System.err.println(deneme.size());
System.err.println(deneme2.size());
Run Code Online (Sandbox Code Playgroud)

上面的代码片段产生

deneme
2
1

输出.我完全搞砸了.有人可以解释为什么会如此.谢谢.

NPE*_*NPE 11

在第二个字符串中,最后iki有一个非打印字符.当我复制并粘贴该字符串时vim,我明白了

String iki = "brescia calcio?<200e>";
Run Code Online (Sandbox Code Playgroud)

我敢打赌,一旦你移除那个角色,神秘就会被解决.

如果您想知道,U + 200E从左到右的标记.