这种平等陈述怎么可能是虚假的?

Ang*_*ker 0 java

可能重复:
Java中的等字符串不相等(==)?

从Eclipse的Display窗口:

 messages.get(i).getMsg() == lastMsg
 (boolean) false
 messages.get(i).getMsg().length()
 (int) 14
 lastMsg.length()
 (int) 14
 messages.get(i).getMsg()
 (java.lang.String) INSERT QUARTER
 lastMsg
 (java.lang.String) INSERT QUARTER
Run Code Online (Sandbox Code Playgroud)

相当新的Java.第一个陈述怎么可能是假的?我在这里错过了一些非常简单的东西吗?

Jes*_*per 5

在Java中比较字符串时,应该通过调用equals()方法而不是使用==运算符来实现.

==运营商不试,如果两个对象的值或内容是一样的.它只是检查两侧的两个表达式是否==引用完全相同的对象.如果您有两个String具有相同内容但是不同对象的对象,==则会返回false.

(虽然有一个小的复杂性:编译器做了一些聪明的技巧,所以如果你使用字符串文字,==实际上会返回true).

String msg = messages.get(i).getMsg();
System.out.println(msg == lastMsg); // false
System.out.println(msg.equals(lastMsg)); // true
Run Code Online (Sandbox Code Playgroud)