.一个java问题 希望详细解答下

.一个java问题 希望详细解答下
关于下面程序片段,( B )的结论是正确的。
String a = "Java";
String b = "Java";
String x = "Ja";
String y = "va";
String c = x + y;
A、a 和 b 指向同一个实例对象,a 和 c 指向同一个实例对象
B、a 和 b 指向同一个实例对象,a 和 c 不指向同一个实例对象
C、a 和 b 不指向同一个实例对象,a 和 c 指向同一个实例对象
D、a 和 b 不指向同一个实例对象,a 和 c 不指向同一个实例对象
清福453 1年前 已收到1个回答 举报

reczhu2 幼苗

共回答了18个问题采纳率:88.9% 举报

public class StringCompareTest
{
public static void main (String [] args)
{
//s1直接引用常量池中的“高等数学”
String s1 = “高等数学” ;
String s2 = "高等" ;
String s3 = "数学" ;
String s4 = "高等" +"数学" ; //编译时就计算出来
String s5 = "高等"+"数"+"学"; //编译时就计算出来
String s6 = s2 + s3 ; //编译时没计算出来
//使用new构造器创建新的String对象,s7引用新创建的String对象
String s7 = new String("高等数学");
System.out.println(s1==s4) ; //true
System.out.println(s1==s5) ; //true
System.out.println(s1==s6) ; //false
System.out.println(s1==s7) ; //false

常量池保证相同的字符串直接量只有一个,不会产生其他的副本,例如,上面例子中,s1 s4 s5所引用的字符串在编译时就确定下来了,因此,它们都将引用常量池中的同一个字符串。

1年前

4
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.035 s. - webmaster@yulucn.com