A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 521123270 中级黑马   /  2015-5-16 19:09  /  2668 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

3黑马币
1.      编译并运行以下代码的输出结果是?(  )
String s1 = new String("amit");
System.out.println(s1.replace('m','r'));
System.out.println(s1);
String s3 = "arit";
String s4 = "arit";
String s2 = s1.replace('m','r');
System.out.println(s2 == s3);
System.out.println(s3 == s4);


请解!说下原因!{:3_65:}

最佳答案

查看完整内容

结果:arit amit false true s1的结果仍然是amit,则是字符串的特点就是一旦被初始化就不可以在改变,所以还是amit String s1 = new String("amit"); 这个s1在内存中有一个对象 String s3 = "arit"; 这个s3在内存中有两个对象 String s2 = s1.replace('m','r');是替换的是s1 的对象,所以里面也是在内存中有一个对象, 所以在比较System.out.println(s2 == s3); s2和s3时,结果为fal ...

2 个回复

倒序浏览
结果:arit
         amit
         false
         true
s1的结果仍然是amit,则是字符串的特点就是一旦被初始化就不可以在改变,所以还是amit
String s1 = new String("amit");    这个s1在内存中有一个对象   
String s3 = "arit"; 这个s3在内存中有两个对象           
String s2 = s1.replace('m','r');是替换的是s1 的对象,所以里面也是在内存中有一个对象,
所以在比较System.out.println(s2 == s3); s2和s3时,结果为false。
String s3 = "arit";   String s4 = "arit";   在比较s3和s4时,结果为true,因为内存都是有一个对象         
回复 使用道具 举报
false
true

S2在堆类存中存储,s3,s4指向的是常量池中同一个字符串。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马