黑马程序员技术交流社区

标题: 基础直到==问题 [打印本页]

作者: 521123270    时间: 2015-5-16 19:09
标题: 基础直到==问题
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:}

作者: YRDHelloworld    时间: 2015-5-16 19:09
结果: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,因为内存都是有一个对象         
作者: zouzouzou    时间: 2015-5-16 21:35
false
true

S2在堆类存中存储,s3,s4指向的是常量池中同一个字符串。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2