以下代码片段: String s1 = "hello"; String s2 = "hello"; System.out.println(s1 == s2); 以下哪句是正确的?
时间: 2023-08-31 08:43:08 浏览: 136
关于String s=new String( "Hello")的例子思考
### 回答1:
正确的语句是 `System.out.println(s1 == s2);`,它会输出 `true`。这是因为 Java 中的字符串常量在编译时就被放入了常量池中,因此 `s1` 和 `s2` 引用的是同一个字符串常量对象,它们的引用地址是相同的。使用 `==` 操作符比较两个对象的引用地址,因此输出结果为 `true`。
### 回答2:
以下哪句是正确的?
s1和s2引用的是同一个字符串对象。
### 回答3:
代码片段中的输出结果是true。
这是因为,在Java中,字符串常量池(String Pool)是一块特殊的内存区域,用于存储字符串常量。当创建一个字符串常量时,Java会首先检查字符串常量池中是否已经存在相同内容的字符串。如果存在,就会返回常量池中的引用,否则会创建一个新的字符串常量,并将其加入到常量池中。
在这个代码片段中,s1和s2都是字符串常量,它们的内容都是"hello"。由于字符串常量池的特性,Java会将它们引用到同一个内存地址上,因此s1和s2的引用指向的是同一个对象。所以,s1和s2通过==比较返回的结果是true。
阅读全文