A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 未名以律 中级黑马   /  2014-8-12 11:07  /  1750 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 未名以律 于 2014-8-13 07:52 编辑

int a=10;   
int b=10;  
a==b是true。

String a=new String("foo");   
String b=new String("foo");    
a==b是false。
不是一样的吗?怎么会是false





评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

5 个回复

倒序浏览
==比较的是两个的值是否相等;
int a 和int b都为10,所以是true

String a 指向的是“foo”对象的地址,String b指向的是另一个对象“foo”的地址,对比结果当然为false;
注意,创建的两个“foo”对象在内存中存储位置是不同的!虽然内容相同,但是存放的地方不同;
回复 使用道具 举报
A:==
                        a:基本类型 比较的是基本类型的值
                        b:引用类型 比较的是引用类型的地址值
B:equals()
                        只能比较引用类型。
                        默认比较地址值。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

回复 使用道具 举报
==比较引用类型 比较的是他的地址,因为对象是new出来的,所以new的动作就是在堆中开辟了一个新的空间,所以两个new出来的对象地址值不可能相同,所以是false
回复 使用道具 举报
==的作用:
                         比较基本类型:比较的是基本类型的值是否相同。
                         比较引用类型:比较的是引用类型的地址值是否相同。
equals();
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
                         默认情况下,Object类的equals比较的是地址值。
                         所以,如果你想比较成员变量的值,请重写该方法。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

回复 使用道具 举报
jw在路途 发表于 2014-8-12 11:48
==的作用:
                         比较基本类型:比较的是基本类型的值是否相同。
                    ...

很详细,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马