a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 69|回复: 0

[JAVA] Java中==和equals的区别

[复制链接]
发表于 2012-7-31 22:04:26 | 显示全部楼层 |阅读模式
作为一个Java的初学者,刚开始学习时,我对于他们一直是出于很模糊的认识,没有清醒的认识它们本质上的区别,下面是在经过老师的解说和网上的资料统计后,我自己对于它们的认识:7 D8 P  I  H$ V6 L: Y! Z. y
   在JAVA中,==与equals都有比较判断对象是否相等的作用,但具体用法却并不相同。==是运算符号,而equals则属于方法。
( K# H3 T3 q0 L! c   当==两边的对象属于基本类型时,==的作用仅是比较对象的值是否相等,如果相等返回true,否则返回false;当两边的对象属于引用数据类型时,==的作用是判断对象的内存地址是否一致,如果同时指向同一地址,则返回true,否则返回false.
+ s. M7 s3 E0 i   equals两边对象只能属于引用数据类型,因为equals是方法,所以它是如何具体判断对象是否相等是根据程序而定的,equals是属于object类,默认是判断内存地址是否相同,但在object的子类中可以重写equals方法,如在String类中只是比较对象内容是否一致,一致则返回true,否则返回false9 O! Y% T1 B- _2 f/ l) M4 L6 Q
   比如:   String s1="abc";
2 Z  ^/ Q/ J+ t+ G4 @0 Q% S( P; E   String s2="abc";
+ G  S- E% W  V! q3 I" h) \   s1.equals(s2)  是true   因为equals比较的是对象的内容
: N0 R7 x- l) ?* {   而 s1==s2   是false   因为当两边的对象属于引用数据类型时,==的作用是判断对象的内存地址是否相同,s1和s2创建了不同的对象,所以内存地址肯定不同。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-3 05:29 , Processed in 0.357885 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表