2007-10-18

讨论一下

3、有下面程序:
public class TestString
{
public static void main(String[] args)
{
String str1 = “abcd”;
String str2 = “abcd”;
String str3 = new String(“abcd”);
String str4 = new String(“abcd”);
System.out.println(str1==str2);
System.out.println(str3==str4);
}
}
输出结果是?
A true true
B true false
C false true
D false false


答案是B 请问一下 str1和str3的声明区别在哪里?
为什么用str1的声明方式 比较的是字符串
而用str3的生命方式比较的是字符串引用。
评论
bill.end 2007-10-19
fancool 写道
为什么str3里会有3个“abcd”啊
还是不明白
哪位能清楚的给我解释一下 谢谢了```

我没说str3里有3个“abcd”!!!!
fancool 2007-10-18
str1和str3的这两种声明字符串的区别到底在哪里啊```
谢谢各位 帮助小弟一下
fancool 2007-10-18
为什么str3里会有3个“abcd”啊
还是不明白
哪位能清楚的给我解释一下 谢谢了```
抛出异常的爱 2007-10-18
汗你找的例子用的变量都是本论坛某个人起的。。。。一点都没变
bill.end 2007-10-18
String是Immutable“类型”的
str1和str2的赋值后,内存中只有1个“abcd”
str3和str4的赋值后,内存中有3个“abcd”, 各自申请一块内存
无论哪种方式“==”都是比较地址的

我说的队不?
fancool 2007-10-18
大哥给我说一下嘛
我真的不明白。。。
ddandyy 2007-10-18
请去坛内搜索......

P.S: 谁告诉你str1比较的是字符串了
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

fancool
搜索本博客
最近加入圈子
存档
最新评论