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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜工 高级黑马   /  2014-8-21 07:51  /  1400 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜工 于 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);
}
}
骑士们,输出结果如何?
这算是道难题,需要完全理解字符串的创建机制。

2 个回复

倒序浏览
arit 调用Static的replace方法会返回一个新的字符串
amit 字符串是不可变的
arit S2已经是一个返回的新的字符串,引用指向的新的字符串
false 因为replace方法底层会产生一个新的字符串进行拼接,所以会产生一个新的字符串,不会指向已有的字符串
true 享元模式,指向了同一个对象
回复 使用道具 举报
楼上正解                                                                        
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马