Java 中 == 与 equals() 的区别:代码示例及解释
Java 中 == 与 equals() 的区别:代码示例及解释
在 Java 中,== 运算符和 equals() 方法用于比较对象,但它们的工作方式不同。本文将通过代码示例来解释它们的区别。
代码示例:
String str1 = 'Hello';
String str2 = new String('Hello');
boolean result1 = (str1 == str2);
boolean result2 = str1.equals(str2);
代码解释:
-
String str1 = 'Hello';:这行代码创建了一个字符串对象str1,并将其赋值为 'Hello'。在 Java 中,字符串字面值可以直接赋值给字符串变量。 -
String str2 = new String('Hello');:这行代码使用new关键字创建了一个新的字符串对象str2,并将其赋值为 'Hello'。通过new关键字创建的字符串对象是独立的,即使内容相同,也会在堆内存中创建新的对象。 -
boolean result1 = (str1 == str2);:这行代码使用==运算符将str1和str2进行比较,并将比较结果赋值给布尔型变量result1。==运算符用于比较两个对象的引用是否相等,即判断两个对象是否引用同一块内存。 -
boolean result2 = str1.equals(str2);:这行代码使用equals()方法将str1和str2进行比较,并将比较结果赋值给布尔型变量result2。equals()方法用于比较两个对象的值是否相等,即判断两个对象的内容是否相同。
结论:
== 运算符用于比较两个对象的引用,即判断两个对象是否指向同一块内存地址。而 equals() 方法用于比较两个对象的值,即判断两个对象的内容是否相同。
在这段代码中,str1 和 str2 的内容都是 'Hello',但它们所引用的对象是不同的。因此,result1 的值为 false,因为 str1 和 str2 的引用地址不同。而 result2 的值为 true,因为 equals() 方法会比较 str1 和 str2 的内容,发现它们的内容相同。
总结:
- 在比较字符串对象时,使用
equals()方法来比较内容是否相同,使用==运算符来比较引用是否相同。 - 在大多数情况下,应该使用
equals()方法来比较字符串对象,因为==运算符可能无法得到预期的结果。
扩展:
如果您需要更具体的解释,请提供相关的代码片段或更多的上下文信息。
原文地址: https://www.cveoy.top/t/topic/SMt 著作权归作者所有。请勿转载和采集!