...换句话说: 让我们假设我有2个字符串声明如此:
String one = new String("yay!");
String two = new String("yay!");
这两个字符串是两个不同的对象,但如果我运行
if(one.equals(two))
System.out.println("equals() returns true.");
我得到“equals()返回true”。 这是因为String类重写了equals()方法以实现内容级别相等。 但是,我需要访问引用级别相等(如在Object中实现的那个)来区分对象一个形式的对象二。 我怎么能这样做?
我试过了:
one.getClass().getSuperclass().equals();
尝试调用String 1的Object equals()方法,但它不起作用。
有什么建议吗?
答案 0 :(得分:3)
String
使用String Literal Pool
,这意味着:“当你尝试构造一个字符串时,首先在Literal Pool
中搜索传统相同字符串的String类,如果存在则返回它,如果不存在则创建它“,所以你无法通过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.");
结果是:
equals() returns true.
请参阅以下链接以获取更多信息:
答案 1 :(得分:2)
答案 2 :(得分:1)
if (one == two)
System.out.println("one and two are the same object");
答案 3 :(得分:1)
使用简单的==
比较。但是,要避免String
实习,您必须使用char
数组创建字符串,例如:String me = new String(new char[] { 'm', 'e' });
而不是使用字符串文字"me"
,例如String me = new String("me");
。
答案 4 :(得分:0)
您唯一需要的是“==”等于运算符。