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