举例严重字符串==与equals()的区别
时间: 2024-05-09 12:15:31 浏览: 29
在 Java 中,== 和 equals() 都用于比较字符串,但它们有着不同的作用。
== 操作符比较两个对象的引用,判断它们是否指向同一个内存地址。如果两个字符串的引用相同,即它们指向同一个内存地址,那么它们是相等的。例如:
```
String str1 = "hello";
String str2 = "hello";
if (str1 == str2) {
System.out.println("str1 and str2 have same reference");
}
```
在这个例子中,str1 和 str2 都指向同一个内存地址,因为它们都是指向 "hello" 字符串的常量池中的同一对象。因此,这个 if 语句会输出 "str1 and str2 have same reference"。
而 equals() 方法比较的是字符串的内容,即它们包含的字符是否完全相同。例如:
```
String str1 = "hello";
String str2 = new String("hello");
if (str1.equals(str2)) {
System.out.println("str1 and str2 have same content");
}
```
在这个例子中,str1 和 str2 包含的字符完全相同,因此它们的内容相等。即使 str2 是通过 new 创建的一个新对象,但是它们的内容相等,因此这个 if 语句也会输出 "str1 and str2 have same content"。
需要注意的是,如果使用 == 操作符比较字符串时,只有当它们指向同一个内存地址时才相等,否则它们是不相等的。而使用 equals() 方法比较字符串时,只要它们包含的字符完全相同,即使它们指向不同的内存地址,也认为它们是相等的。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)