java equal 和 == 混淆

标签 java equals string-comparison comparison-operators

Possible Duplicate:
what is String pool in java?

1. 我知道 == 检查两个对象是否指向相同的内存位置,并且 equals 的默认定义使用 ==进行检查,意味着两者相同。

2. String 类重写 equals 方法来检查两个字符串是否具有相同的值。

考虑 S1 =“测试”且 S2 = S1;

现在 S1 和 S2 是两个不同的对象,因此根据第 1 点 S1==S2 应该为 false 并且根据第 2 点 S1.equals(S2 ) 应该是true,但是当我在 eclipse 中运行这个小程序时,两者都返回 true。字符串对象有什么特殊之处吗,S1 == S2 也成立。

最佳答案

Consider S1 = "test" and S2 = S1; Now S1 and S2 are two different objects

不。这就是你的论点失败的地方。

您创建了一个字符串对象,并且两个变量都引用同一个字符串对象。赋值不会创建字符串的新副本。

关于java equal 和 == 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13681535/

相关文章:

适用于桌面和移动设备的 Java 单一代码库

java - 类与 JPA 的关系

java - HashSet 存储相等的对象

java - 对于一个测试用例,按字典顺序比较字符串的新方法失败

java - elasticsearch - 无法找到或加载主类 -Xms2g

java - 如何涂黑一个Swing组件?

Java 字符串比较

java - 为什么这两个实例不是 `equal()` ?

c++ - 如何在C++中比较两个文本文件

c - 错误: result of comparison against a string literal is unspecified (use strncmp instead) and Check50 showing error on credit problem