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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© forjunjian 中级黑马   /  2015-8-25 22:10  /  460 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕向东视频里面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对象。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马