黑马程序员技术交流社区
标题:
求大神帮忙分析下!!!
[打印本页]
作者:
殷挥笔
时间:
2013-11-10 22:46
标题:
求大神帮忙分析下!!!
public class Test {
public static void main(String[] args) {
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
求解这是为什么?
作者:
中关村阿旺
时间:
2013-11-10 23:08
String类的subString()方法返回一个新字符串,它是此字符串的一个子字符串。
你虽然调用了这个方法,但是你并没有让它的返回结果重新赋给s对象。
replace()方法同理。
所以,s对象仍然指向字符串"abc"。
至于为什么==号比较返回false,是因为两个对象的内存地址不同。
String value = new String ("abc");这句代码中的new关键字会在内存中又创建一个字符串对象,
所以两个字符串对象的内存地址不同,返回false。
作者:
月生春
时间:
2013-11-10 23:25
public class Test {
public static void main(String[] args) {
String s = "abc";
s.substring(1); //截取1角标以后的元素 ,但是对象s没有改变 还是“abc”字符串对象一旦在堆内存中就不会改变
s.replace("bc", "xyz"); //将“bc”替换为“xyz”, 同理 是还是"abc”
System.out.println(s); // 打印的结果为“abc”
String value = new String ("abc"); //创建了一个新的字符串对象 new String("abc")
System.out.println(s == value); // s 和value 是两个不同的字符串 ,不是同一对象 所以运行结果为 false
}
不知道这样解释你能否理解,欢迎交流
作者:
hel
时间:
2013-11-11 04:36
String一旦创建了对象他在内存中的数据就不会改变,
s.substring(1); 你并没有建立对象引用,
String ss = s.replace("bc", "xyz"); 当你建立引用后,如果你在打印 S 的值还是abc,
作者:
hurryup
时间:
2013-11-11 08:20
1.string类是final类型,一经赋值,无法更改,对String 对象的任何操作都是无效的,只要不重新指向该对象
2.对象s和对象value 是两个不同的对象,指向内存中不同的操作地址符,所以为假
作者:
王雨神
时间:
2013-11-11 09:03
String s = "abc";
s.substring(1);
s.replace("bc", "xyz");
String一旦创建了对象他在内存中的数据就不会改变,
这个你只进行了一次赋值,后面俩个方法有返回值但是你没传给s呀!
这样写就行了
String s = "abc";
s=s.substring(1);
s=s.replace("bc", "xyz");
作者:
黄炳期
时间:
2013-11-11 09:07
帖子已分类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2