黑马程序员技术交流社区
标题:
后来,我发现我真的很菜!
[打印本页]
作者:
wuchuang1992
时间:
2013-11-1 22:02
标题:
后来,我发现我真的很菜!
class Test{
public static void main(String[] args)
{
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println("s1 == s2 ? "+s1 == s2);
}
}
在String和Boolean类型中,打印的false,"s1 == s2 ? " 在哪?why?
作者:
七道
时间:
2013-11-1 22:16
s1和s2指向的地址不一样,所以是false,如果想判断他们的内容是否相同,可以用equals比较
作者:
魏-玉-彪
时间:
2013-11-1 23:47
class Test{
public static void main(String[] args)
{
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println("s1 == s2 ? "+s1 == s2);
}
}
在String和Boolean类型中,打印的false,"s1 == s2 ? " 在哪?why?
复制代码
在JAVA中, String 不属于基本数据类型,而是引用数据类型,事实上,
String s1 s2 的值,不是一个字符串,而是字符串在内存中的地址, String 变量
名
s1 s2
只是引用了一个地址 而new 的意思是在内存中分别分配一个新的存储地址给
s1 s2 , s1 s2 所存内存地址中所指向的内存中都各自存了"abc".但这里==比的不是
那里面的值,而是 ,s1 s2的所存储的内存地址值,所以 如果要比,s1 s2各自存的内存
地址指向的内存空间的内容,可以用 equals 进行比较
作者:
wuchuang1992
时间:
2013-11-2 07:15
魏-玉-彪 发表于 2013-11-1 23:47
在JAVA中, String 不属于基本数据类型,而是引用数据类型,事实上,
String s1 s2 的值,不是一个字符串, ...
我知道为什么是false,我想问一下为什么"s1==s2 ?" 没打印出来 ?
作者:
深情小建
时间:
2013-11-2 10:05
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println("s1 == s2 ? "+(s1 == s2));
你这个问题是运算符优先级的问题:
照你的写法,程序执行顺序为 先 "s1 == s2 ? "+ s1 得到 "s1 == s2 ?abc"
然后再 "s1 == s2 ?abc" == s2 即 "s1 == s2 ?abc" == "abc" 当然的 返回结果为 false
你想要的应该是下面这种 加上括号
System.out.println("s1 == s2 ? "+(s1 == s2));
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2