java中的==和equals

woshigexiaonvren 2009-12-01 09:40:08
java中的==和equals有什么区别,
...全文
88 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
灰哥 2009-12-01
  • 打赏
  • 举报
回复
记死的,
一个比内存地址 (==),
一个比值 (equals)自己测试一下就差不多明白了
道光2008 2009-12-01
  • 打赏
  • 举报
回复
java中的==:对于基本数据类型来用的,比如 int i = j;,如果对于对象意味着两个对象Integer i指向同一个内存地址,只有在对象克隆的时候才会存在
equals:基本的数据类不能用equals来比较,已不支持,equals比较对象时,意味其值相等
liangwansheng 2009-12-01
  • 打赏
  • 举报
回复
复习一下,呵呵。
紫炎圣骑 2009-12-01
  • 打赏
  • 举报
回复
2楼很完善
laker_914 2009-12-01
  • 打赏
  • 举报
回复
比较基础的问题
passself 2009-12-01
  • 打赏
  • 举报
回复
2楼讲的比较详细,不过只要记住,一个是值相等,一个是地址相等就可以了
  • 打赏
  • 举报
回复
public   class   Example{   
public static void main(String[] args) {
String a = new String("ABC");
String b = new String("ABC");
if( a == b )
System.out.println("== equals") ;
else
System.out.println("== not equal");
}
}
chenwqi0120 2009-12-01
  • 打赏
  • 举报
回复
在object类中,==比较的是两个object对象的内存地址,而equals方法,在内部的实现只是简单的判断object对象是否“==”,也就是说,如果是object对象,==与equals是没有区别的。
但在很多的类中,都对equals进行了重写,如String类中,equals比较的就是两个String对象的内容是否相等。
zhouyongyang 2009-12-01
  • 打赏
  • 举报
回复
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

==比较的是2个对象的地址,而equals比较的是2个对象的内容。

显然,当equals为true时,==不一定为true;

API里的类大部分都重写了equals方法,没有重写的一般是自己写的类,

如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,

因为自定义的类是继承于object,而object中的equals就是用==来实现的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧