MaV*_*ldo 5 java methods object
...换句话说:假设我有 2 个字符串声明如下:
String one = new String("yay!");
String two = new String("yay!");
Run Code Online (Sandbox Code Playgroud)
这两个字符串是两个不同的对象,但是如果我运行
if(one.equals(two))
System.out.println("equals() returns true.");
Run Code Online (Sandbox Code Playgroud)
我得到“equals() 返回 true”。这是因为 String 类覆盖了 equals() 方法以实现内容级别相等。但是,我需要访问一个引用级别的相等性(就像在 Object 中实现的那个)来区分对象一和对象二。我怎样才能做到这一点?
我试过这个:
one.getClass().getSuperclass().equals();
Run Code Online (Sandbox Code Playgroud)
尝试调用 String 一的 Object equals() 方法,但没有奏效。
有什么建议吗?
如果您想检查参考,只需执行:
one == two
Run Code Online (Sandbox Code Playgroud)
但要小心字符串。有一个叫做字符串常量池的东西,因此它们可能引用同一个对象。
String在java中使用a String Literal Pool,这意味着:“当你尝试构造一个字符串时,首先String类搜索Literal Pool传统的相同字符串,如果存在则返回它,如果不存在则创建它”,所以你不能通过equals方法检查比较 String 实例的引用,必须使用==运算符,如下所示:
String one = new String("yay!");
String two = new String("yay!");
if(one.equals(two))
System.out.println("equals() returns true.");
if(one == two)
System.out.println(" == operator returns true.");
Run Code Online (Sandbox Code Playgroud)
结果是:
equals() returns true.
Run Code Online (Sandbox Code Playgroud)
请参阅以下链接了解更多信息:
| 归档时间: |
|
| 查看次数: |
13071 次 |
| 最近记录: |