string类创建字符串之使用equals和==判断字符串是否相等
时间: 2024-11-11 09:40:29 浏览: 40
在Java中,`String` 类是用来处理字符串的,它提供了一些方法来比较两个字符串是否相等。`equals()` 和 `==` 这两个操作符在这两种情况下的作用是不同的。
1. **equals()** 方法:这是用于检查两个字符串的内容是否相同。它会忽略大小写、空格等因素,只关注字符序列本身。例如:
```java
String str1 = "hello";
String str2 = "Hello"; // 虽然str1首字母大写,但equals(str2)会返回true,因为它们内容相同
System.out.println(str1.equals(str2)); // 输出:true
```
2. **==** 操作符:这个操作符则用于比较两个引用是否指向内存中的同一个对象。对于 `String` 对象,如果它们是由相同的字面值创建的,如 `"hello"`,那么它们实际上是共享的池中的对象,所以 `==` 返回 true:
```java
String str3 = "hello";
System.out.println(str1 == str3); // 输出:true,因为"hello"是常量池中的同一个对象
```
如果对 `String` 实例进行了修改(比如添加一个前缀),则会产生新的对象,`==` 就不会返回 true 了:
```java
String str4 = new String("hello"); // 这是一个新创建的对象
System.out.println(str1 == str4); // 输出:false
```
总结来说,当你想比较字符串的内容时,应该使用 `equals()`;而当你想知道两个字符串变量是否引用同一个对象时,才应该使用 `==`。
阅读全文