黑马程序员技术交流社区

标题: 字符串特点疑惑 [打印本页]

作者: Ricky_Nick    时间: 2014-4-19 22:57
标题: 字符串特点疑惑
字符串对象最大的特点就是一旦被初始化,就不可以被改变。但是里面有许多替换方法,这不就改变了原来的对象么?
想问一下,我误解的地方在哪里………………
作者: 织语不如书    时间: 2014-4-19 23:06
不是 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才是替代后的
作者: 忘川    时间: 2014-4-19 23:07
  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,没改变
复制代码

作者: \(^o^)/    时间: 2014-4-19 23:23
你把它替换了就是一个新的原来的字符串还是没有变。
作者: demown    时间: 2014-4-20 12:22
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是无法改变的所以他并没有改变而是给我们创建了一个新的对象 这个新的对象在改变.







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