【发布时间】:2012-11-20 19:37:16
【问题描述】:
1. 我知道 == 检查两个对象是否指向相同的内存位置,并且 equals 的默认定义使用 == 进行检查,表示两者相同。
2. String 类重写 equals 方法来检查两个字符串是否具有相同的值。
考虑 S1 =“测试”和 S2 = S1;
现在 S1 和 S2 是两个不同的对象,因此根据点 1 S1==S2 应该是 false 并且根据点 2 S1.equals(S2 ) 应该是 true 但是当我在 Eclipse 中运行这个小程序时,两者都返回 true。 S1 == S2 也成立的字符串对象有什么特别之处吗?
【问题讨论】:
-
这可能是该论坛上提出并已回答的#1 Java 问题。 ;)
-
“现在 S1 和 S2 是两个不同的对象” - 不,它们不是。 S2 和 S1 都是对同一个字符串对象的引用。
-
初始化 S2=S1 时,它们都指向相同的内存位置。尝试 S1 =“测试”; S2 =“测试”;这会给你 S1==S2 false
-
@PeterLawrey 每次被问到,都会得到多次回答。真是浪费时间……;)
标签: java equals string-comparison comparison-operators