黑马程序员技术交流社区

标题: == 和equals的区别是什么 [打印本页]

作者: 左丘无烈    时间: 2016-9-26 17:24
标题: == 和equals的区别是什么
(^^)求指教
作者: Frankle    时间: 2016-9-26 18:16
==: 运算符,  基本数据类型比较的是值,引用数据类型比较的是地址值
equals:方法 只有引用数据类型可以调用,比较的是内容
作者: 煮酒拭剑赏美人    时间: 2016-9-26 20:30
楼上这位兄台说的不具体,小弟来补充一下,==: 运算符,  基本数据类型比较的是值,引用数据类型比较的是地址值

equals:方法 只有引用数据类型可以调用,它是Object类的方法,默认是和==一样比较地址值的,但是一般都是重写这个方法,用来比较两个引用数据是否相等。

作者: 不羁的码农    时间: 2016-9-26 20:33
==: 运算符,  基本数据类型比较的是值,引用数据类型比较的是地址值 equals:方法 只有引用数据类型可以调用,比较的是内容
作者: tanghuiTom    时间: 2016-9-26 21:22
==: 运算符,  基本数据类型比较的是值,引用数据类型比较的是地址值。
equals:方法只有引用数据类型可以调用,它是Object类的方法,默认是和==一样比较地址值的,但是一般都是重写这个方法,用来比较两个引用数据是否相等。
比如:  String  a = new String("abc");    String  b = new String("abc");    这个时候a != b。 但是a.equals(b)的结果却是true,就是因为String类重写Object类的equals()方法。

但是如果是这样:  String a = "abc";    String b = "abc";   这个时候a==b,和a.equals(b)的结果都是true。这个就涉及到字符串常量池的问题了。此时的a和b的值都是从常量池里面获取的,所以他们的地址也就相等了。
作者: 459374998    时间: 2016-9-26 21:28
简单点就是,==比较地址,equal()比较内容。
作者: IceLoveInFire丶    时间: 2016-9-26 21:31
== 比较的是基本数据类型。
equals 默认比较的是地址值,子类会重写Object的equals 方法来转化为内容比较。
作者: huaming    时间: 2016-9-26 22:18
equals只能比较 引用数据类型
==  基本数据类型  引用数据类型都可以比较
作者: wxr950515    时间: 2016-9-26 22:19
都返回的是布尔类型......
作者: wxr950515    时间: 2016-9-26 22:20
都返回的是布尔值  
作者: bahamut322    时间: 2016-9-26 22:22
==是运算符,equals是方法
作者: Da_xigua    时间: 2016-9-26 22:30
==比较值,equals比较地址值,也可以比较字符串内容是否相同
作者: gcno93    时间: 2016-9-26 22:42
==是运算符,可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型时比较的是值,比较引用类型时比较的是内存地址,equals是object类的方法,只能比较引用类型,默认比较的是引用类型的内存地址,但是通常我们都会重写这个方法,用它来按照我们定好的规则来比较.例子:String类就重写了该方法,让他按比较字符串的内容来比较!
作者: 暮雨微凉    时间: 2016-9-26 22:46
共同点: 都可以做比较,返回值都是boolean
区别  : 1、==是比较运算符,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值。
2、equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法 equals犯非法和==比较引用数据类型无区别,重写后的equals方法可以比较对象中的属性。
作者: 郑大仙丶    时间: 2016-9-26 22:54
==是比较运算符,比较的是值.
作者: Fate_stay    时间: 2016-9-26 22:58
==比较的是地址值, equals比较的是内容
作者: KiRio    时间: 2016-9-26 23:00
受教了!

作者: markiyangliu    时间: 2016-9-26 23:11
看不看有没有重写equals方法吧?
作者: fiendGG    时间: 2016-9-26 23:15
看到楼上大神的解答涨姿势了
作者: xianghui0521    时间: 2016-9-26 23:18
==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,
基本数据类型比较的是值,引用数据类型比较的是地址值
equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,
如果没有重写Object类中的equals方法
,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性





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