String str1="java"; String str2="java"; String str3=new String("java"); StringBuffer str4=new StringBuffer("java"); 以下表达式的值为true的是?"
时间: 2024-02-12 16:40:53 浏览: 130
表达式 `str1 == str2` 的值为 `true`,因为 `str1` 和 `str2` 两个字符串变量都指向常量池中的同一个字符串 "java"。
表达式 `str1 == str3` 的值为 `false`,因为 `str3` 是通过 `new` 关键字创建的一个新的字符串对象,它在堆内存中开辟了一块新的空间,和常量池中的 "java" 并不是同一个对象。
表达式 `str1.equals(str3)` 的值为 `true`,因为 `equals()` 方法比较的是字符串的内容,而不是对象的引用。
表达式 `str1 == str4.toString()` 的值为 `false`,因为 `str4.toString()` 返回的是一个新的字符串对象,而不是常量池中的 "java"。
表达式 `str1.equals(str4.toString())` 的值为 `true`,因为 `equals()` 方法比较的是字符串的内容,而 `str4.toString()` 返回的字符串内容是 "java"。
相关问题
String str1="java"; String str2="java"; String str3=new String("java"); StringBuffer str4=new StringBuffer("java");
这段代码定义了四个字符串类型的变量,它们分别是`str1`、`str2`、`str3`和`str4`。其中,`str1`和`str2`使用了字符串常量池,它们的值都是"java",因此它们的地址是相同的。而`str3`使用了`new`关键字创建了一个新的字符串对象,它的值也是"java",但是它的地址与`str1`和`str2`不同。而`str4`则是一个`StringBuffer`对象,它同样使用了`new`关键字创建,它的值也是"java",但是它的类型和`str1`、`str2`、`str3`不同,它是一个可变的字符串对象。因此,总结如下:
- `str1`和`str2`地址相同,值相同,类型为`String`。
- `str3`地址与`str1`和`str2`不同,但值相同,类型为`String`。
- `str4`地址与`str1`、`str2`、`str3`都不同,值相同,类型为`StringBuffer`。
2.2 对于下列代码:String str1 = "AAA软件教育"; String str2 = "AAA软件教育"; String str3 = new String("AAA软件教育"); StringBuffer str4 = new StringBuffer("AAA软件教育"); 以下表达式返回true的是()。A.str1 == str2 B.str2 == str3 C.str1 =
下列表达式返回true的是A. str1 == str2 和 B. str2 == str3。因为str1和str2都指向字符串常量池中的同一个字符串对象,而str3指向堆内存中的一个新的字符串对象。虽然str4也指向堆内存中的新对象,但是StringBuffer类并没有重写equals方法,所以不会调用到StringBuffer类的equals方法,而是调用到Object类的equals方法,因此无论如何都会返回false。
阅读全文