黑马程序员技术交流社区

标题: String类的replace()摸索 [打印本页]

作者: forjunjian    时间: 2015-8-25 22:10
标题: String类的replace()摸索
毕向东视频里面155—String(常见api)
提到了replace方法,当没有被进行替换时返回的是自己本身。
那么这个本身就是常量池里头的对象,我对这个有所质疑,以下是我的验证
String str = "hello java";
String s1 = str.replace("q", "e");
System.out.println(str==s1);
结果为true。
所以还真是常量池里头的对象。那么是不是若有常量池里面有对象,则返回这个常量对象呢?
我的验证
String str = "hello java";
String str2 = "hello jnvn";
String s2 = str.replace("a", "n");
System.out.println(s2==str2); //验证replace产生的是否为常量对象  结果为false
System.out.println(s2.equals(str2));//验证内容是否相等  结果为true
String s3 = s2.intern(); //添加进常量池,若常量池中有,则返回常量池中的常量对象
System.out.println(s3 == str2);//结果为true 验证intern返回的对象是否为常量对象
System.out.println(s3==s2);//结果为false  再次验证replace产生的是否为常量对象
结果为如备注
返回的应该是一个string对象,而不是常量。
所以方法replace总结为,对常量进行replace。
当没有做替换时返回的是常量池中的对象、
当做出替换后返回的是新的String对象。






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