String中的==和equals的区别
时间: 2024-08-13 08:08:49 浏览: 50
C#中的 == 和equals()区别浅析
在Java中,`String` 类中的 `==` 和 `equals()` 方法有明显区别,用于比较字符串值的方式。
1. `==` 运算符:
- 当用于两个 `String` 对象时,`==` 检查的是对象的身份(引用),即它们是否指向同一个内存地址。如果两个 `String` 对象的引用指向同一块内存区域,那么 `==` 会返回 `true`;否则,返回 `false`。
- 示例:
```java
String str1 = "hello";
String str2 = "hello";
System.out.println(str1 == str2); // 输出 true,因为它们指向相同的字符串常量池中的字符序列
```
2. `equals()` 方法:
- 它用于比较字符串的内容是否相等,不管它们是在哪里创建的,或者它们是如何被实例化的。这个方法总是使用字符串字面量的内容进行比较。
- 如果两个字符串的内容相同,`equals()` 方法会返回 `true`,即使它们是不同的对象(不同的内存地址)。
- 示例:
```java
String str1 = new String("hello");
String str2 = "hello";
System.out.println(str1.equals(str2)); // 输出 true,因为尽管它们是不同的对象,但内容相同
```
总结:
- 如果你想检查两个 `String` 对象是否引用了相同的内存位置(即是否是同一个字符串字面量),用 `==`。
- 如果你想检查两个 `String` 对象的内容是否相同,无论它们的创建方式,用 `equals()`。
阅读全文