黑马程序员技术交流社区

标题: 求助 有关substring和replace [打印本页]

作者: 李前进    时间: 2014-3-14 14:38
标题: 求助 有关substring和replace
String s = "abc";
s.substring(1);
s.replace("bc", "xyz");
System.out.println(s);
String value = new String ("abc");
System.out.println(s == value);

结果为什么会是:abc false?
作者: 谜燕    时间: 2014-3-14 14:48
substring和replace这两个方法都有返回值,对s进行了操作并没有赋值给s,所以不会变化,况且String类一旦被初始化,就不会被改变,重新赋值,只是把引用地址改了,对象还在内存中。后面的之所以为false,是因为String s=“abc”,创建了一个对象,String value = new String ("abc");创建了两个对象,一个是new,一个是“abc”。
作者: 李前进    时间: 2014-3-14 14:54
zengming13 发表于 2014-3-14 14:42
首先要明白的是字符串是不可以修改的!!!
String s = "abc";
s.substring(1);  //截最字符串,返回的是截 ...

很清晰,明白了!
作者: 1014917278    时间: 2014-3-14 14:55
楼上大哥说的真详细,其实你调用的两个字符串的函数都是有返回值的,修改后的字符串应在返回值里,这样就行了。另外字符串比较是否相同用的是equals方法,==只能比较地址值,但两个字符串是两个不同的对象,所以返回值是false;
  1. s=s.subString(1);
  2. s=s.replace("bc","xyz");
复制代码

作者: daoyua    时间: 2014-3-14 17:37
s.replace("bc", "xyz");,你这句话没有赋值给S啊,应该这样s=s.replace("bc", "xyz");
作者: SyouRai_Tsk    时间: 2014-3-14 19:12
请楼主不要拿基础面试题来贴吧里问,不然,就失去了选拔的意义了
作者: Pinfan    时间: 2015-10-18 20:30
谜燕 发表于 2014-3-14 14:48
substring和replace这两个方法都有返回值,对s进行了操作并没有赋值给s,所以不会变化,况且String类一旦被 ...

明白了!




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