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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ricky_Nick 中级黑马   /  2014-4-19 22:57  /  1052 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符串对象最大的特点就是一旦被初始化,就不可以被改变。但是里面有许多替换方法,这不就改变了原来的对象么?
想问一下,我误解的地方在哪里………………

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

4 个回复

倒序浏览
不是 replace方法返回新的字符串 旧的还是旧的:
  1. String s = "abcdaaa";
  2.                 System.out.println(s);
  3.                 String s1 = s.replace('a', 'b');
  4.                 System.out.println(s);
  5.                 System.out.println(s1);
复制代码

打印出来s不变,s1才是替代后的

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
  1. //楼主说的替换方法,是指replace那些吧
  2. /*
  3. 你看 这是API文档中对replace这个方法的定义
  4. replace
  5. public String replace(char oldChar,
  6.                        char newChar)

  7. 返回一个新字符串,所得结果是把该字符串中所有的 oldChar 替换成 newChar 。
  8. 如果字符 oldChar 没有出现在该对象表示的字符串序列中,则返回该字符串。


  9. 参数:
  10. oldChar - 旧字符。
  11. newChar - 新字符。
  12. 返回:
  13. 一个字符串,由该字符串中出现的每个 oldChar 被替换为 newChar 得到。
  14. 换句话说,这些替换方法,都返回了一个新对象,原对象的值还是不变的
  15. */
  16. String str = "abd";
  17. String str1 = str.replace("b","s");
  18. System.out.println(str1); //输出asd,新对象
  19. System.out.println(str); //输出abd,没改变
复制代码

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
\(^o^)/ 来自手机 中级黑马 2014-4-19 23:23:49
板凳
你把它替换了就是一个新的原来的字符串还是没有变。
回复 使用道具 举报
01.String s = "abcdaaa";

02.                System.out.println(s);

03.                String s1 = s.replace('a', 'b');//调用String中的 replace方法将“a”替换成“b”,该过程在内存中又再次创建了一个新的对象.

04.                System.out.println(s);//这个s打印出来的还是"abcdaaa";

05.                System.out.println(s1);//这个打印出来的是"bbcdbbb";


上面代码告诉我们当我把一个字符替换成另一个字符的时候就会在内存中产生一个新的对象 也就是说 我们一开始的对象S是无法改变的所以他并没有改变而是给我们创建了一个新的对象 这个新的对象在改变.


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马