黑马程序员技术交流社区

标题: 一道String方面的题目,你会吗? [打印本页]

作者: 杜工    时间: 2014-8-21 07:51
标题: 一道String方面的题目,你会吗?
本帖最后由 杜工 于 2014-9-11 12:53 编辑

public class Test{
public static void main(String[] args){
  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);
  System.out.println(s2 == s3);
  System.out.println(s3 == s4);
}
}
骑士们,输出结果如何?
这算是道难题,需要完全理解字符串的创建机制。


作者: 格子、    时间: 2014-8-21 08:12
arit 调用Static的replace方法会返回一个新的字符串
amit 字符串是不可变的
arit S2已经是一个返回的新的字符串,引用指向的新的字符串
false 因为replace方法底层会产生一个新的字符串进行拼接,所以会产生一个新的字符串,不会指向已有的字符串
true 享元模式,指向了同一个对象
作者: 李章敏    时间: 2014-8-21 09:26
楼上正解                                                                        




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