本帖最后由 Jim-剣◆﹏ 于 2013-11-1 09:27 编辑
问题在注释那里了
- String s1 = new String("amit");
- System.out.println(s1.replace('m','r')); //这里返回一个的应该是String的匿名对象,应该在常量池里才对
- System.out.println(s1); //s1的值没修改
- String s3 = "arit"; //在常量池里
- String s4 = "arit";
- String s2 = s1.replace('m','r'); //这里应该也是返回一个String的匿名对象,并且直接应用常量池里的“arit”才对
- System.out.println(s2 == s3); //那么这里应该返回true 才对,运行返回false,何解?相同值的String对象不相等怎么解释?
- System.out.println(s3 == s4);
复制代码 我查了String类的replace的用法
public String replace(char oldChar,char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象
|