黑马程序员技术交流社区

标题: java基础问题 [打印本页]

作者: Miracle1990    时间: 2016-5-18 16:19
标题: java基础问题
int a =10;
int b =10;
判断a==b 返回的的是true
String a = new String("foo");
String b = new String("foo");
判断a==b 返回的的是false,为什么?
作者: 旭日MVP    时间: 2016-5-18 20:15
因为基本数据类型指向的是数据本身,引用类型String指向的是地址,所以a,b为引用类型时返回为false
作者: li6232876    时间: 2016-5-18 22:15
int a =10;
int b =10;
判断a==b 返回的的是true
String a = new String("foo");         //new 对象的时候,会在堆内存创建对象,然后将该对象的地址值返回;System.out.println(a);                     //不妨测试一下,打印a, b 的值;
String b = new String("foo");
System.out.println(a);                    //不妨测试一下,打印a, b 的值
你会发现,a和b打印出来的都是地址值,而且不同对象的地址值不可能相同;
如果想得到true, 你可以尝试用equal( )方法:System.out.println(a.equal(b));   


纯手打,如果觉得可以请点个支持,谢谢!



作者: 六w六    时间: 2016-5-18 22:45
new Xxx创建的是对象。String a = new String("foo");  创建一个对象,给a的是一个地址值。String b = new String("foo");再次创建对象,给b的是不同的地址值。a和b中的地址值不同,所以判断结果是false。
作者: 石头stone    时间: 2016-5-18 22:59
引用数据类型比较的是地址值,你可以将a与b打印出来看
作者: Deleba    时间: 2016-5-18 23:36
学到了,原来是这样。
作者: 我是你岁哥❤环    时间: 2016-5-18 23:45
“==”是比较运算符,既能比较基本数据类型,又能比较引用数据类型。基本数据类型比较的是数值,引用数据类型比较的是地址值
建议你注意一下“==”与equals的区别
作者: 追风筝的少年    时间: 2016-5-18 23:47
li6232876 发表于 2016-5-18 22:15
int a =10;
int b =10;
判断a==b 返回的的是true

真大神啊!
作者: 追风筝的少年    时间: 2016-5-18 23:48
已经有大神回复了,貌似很有道理啊!
作者: JohnChan    时间: 2016-5-18 23:49
new Xxx创建的是对象。String a = new String("foo");  创建一个对象,给a的是一个地址值。String b = new String("foo");再次创建对象,给b的是不同的地址值。a和b中的地址值不同,所以判断结果是false。
作者: woshijingke    时间: 2016-5-19 08:16
int a跟b 比较的是数值  10  == 10;String  a==b 比较的是地址值,地址值是不同的;
作者: HEIMAZGP    时间: 2016-5-19 18:27
学到了

作者: 2457740857    时间: 2016-5-19 18:57
好像我也找出问题所在了,作为新人的我有点小高兴。。
作者: okchenyang44    时间: 2016-5-19 19:43
看就感觉要走的路还
作者: loop    时间: 2016-5-20 21:53
学习了。。。。
作者: kunwenli    时间: 2016-5-20 21:58
new出来的在堆内存啊
作者: a499543100    时间: 2016-5-20 23:14
学到了,原来是这样。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2