黑马程序员技术交流社区
标题:
迷惑???
[打印本页]
作者:
高廷平
时间:
2012-8-31 16:06
标题:
迷惑???
package mytest;
public class Demo_yest {
public static void main(String[] args) {
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1+"和"+str2+"相等吗?:"+(str1==str2));
//==比较的是内存地址
}
}
输出:abc和abc相等吗?:false
package mytest;
public class Demo_yest {
public static void main(String[] args) {
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1+"和"+str2+"相等吗?:"+str1==str2);
//==比较的是内存地址
}
}
输出:false
????????????
第二个程序的 “abc和abc相等吗?” 跑哪里去了呢?
作者:
周兴华
时间:
2012-8-31 16:15
本帖最后由 周兴华 于 2012-8-31 16:20 编辑
楼主请看红色字体注释部分
package mytest;
public class Demo_yest {
public static void main(String[] args) {
String str1=new String("abc");
//在内存中开辟了一个空间存放new String("abc")对象,变量str1指向这个对象
String str2=new String("abc");
//在内存中又开辟了一个空间存放new String("abc")对象,变量str2指向这个对象
System.out.println
(str1+"和"+str2+"相等吗?:"+(str1==str2));
//str1和str2指向的是两个不同的对象,所以这里返回的是false,(str1==str2)要括起来
//==比较的是内存地址
}
}
作者:
袁艳超
时间:
2012-8-31 16:16
这是一个很低级的错误,+ 是字符串连接符,你输出的是 (str1+"和"+str2+"相等吗?:"+str1)和 str2 是否相等, 那肯定是false啦
作者:
陈莹
时间:
2012-8-31 16:18
本帖最后由 陈莹 于 2012-8-31 16:23 编辑
System.out.println(str1+"和"+str2+"相等吗?:"+str1==str2);
这个语句错了
“+”的优先级高于“==”,所以相当于
(str1+"和"+str2+"相等吗?:"+str1)==str2了
,
编译后就成为
“abc和abc相等吗?:abc”==“abc”,
打印的只有false。
你应该向第一个程序那样将str1==str2括起来(str1==str2),明白了吗?
作者:
高廷平
时间:
2012-8-31 16:33
{:soso_e106:}了解!
作者:
高廷平
时间:
2012-8-31 16:39
标题:
RE: 迷惑???[已解决]
此问题一解决!:lol
作者:
芦曦
时间:
2012-8-31 16:45
输出语句有错误: System.out.println(str1+"和"+str2+"相等吗?:"+str1==str2); +号是字符串连接符。
改成这样 System.out.println(str1+"和"+str2+"相等吗?:"+
(
str1==str2
)
);
输出的结果就是你想要的了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2