黑马程序员技术交流社区
标题:
关于String的问题
[打印本页]
作者:
lxww
时间:
2013-3-21 21:39
标题:
关于String的问题
本帖最后由 kingdom_202 于 2013-3-21 23:24 编辑
class Test1 {
public static void main(String[] args) {
String strValue = "ABCDEFG";
strValue.substring(3);
strValue.concat("123");
System.out.println(strValue);
String value = new String ("ABCDEFG");
System.out.println(strValue == value);
}
}
求解答。以上的输出结果为什么是ABCDEFG和false呢,而不是123DEFG和true呢?求详细描述。急急急!!!
作者:
张文星
时间:
2013-3-21 21:42
字符串比较不能用 ==,要用equals,因为字符串是引用,里面存的是地址。
作者:
IT菜鸟
时间:
2013-3-21 21:46
1.首先String 是final 类的,无论如何操作 都是产生新的字符串,原来的字符串的值不会变 。因此是ABCDEFG
2.再者 String 是Object 类型的。两个字符是两个对象 ,==比较的是地址,两个对象的地址不可能一样 因此是false
作者:
朱盛文
时间:
2013-3-21 21:54
String是常量,它们的值在创建之后不能更改,StringBuffer和StringBuilder是可变的字符缓冲区。所以第一个打印出来的结果是ABCDEFG。
String value = new String ("ABCDEFG");这里是新建了一个对象,两个对象的地址值不是一样的,而==号比较的又是地址值,所以是false。
作者:
lxww
时间:
2013-3-21 23:23
朱盛文 发表于 2013-3-21 21:54
String是常量,它们的值在创建之后不能更改,StringBuffer和StringBuilder是可变的字符缓冲区。所以第一个 ...
受教了。讲的蛮清楚,谢谢。呵呵
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2