黑马程序员技术交流社区

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

作者: 一大把手    时间: 2015-12-25 15:02
标题: ==和equals的区别
能不能说一下==和equals的区别是什么?
作者: hbcoding    时间: 2015-12-25 18:49
http://bbs.itheima.com/thread-267630-1-1.html
作者: foolishlovepig    时间: 2015-12-25 18:53
==这个是对地址作比较吧?equals就直接比较的字符串。所以一般字符串都用equals方法而不是==,但是数值比较(int,float之类的)就是==更方便一些
作者: 云鱼    时间: 2015-12-25 21:51
==基本数据类型比较的是值,引用数组类型比较的是地址值
equals要看应用类里面又没有重写,Object类中比较的也是地址值,没什么意义,,不过API中很多的类都重写了equals方法.用来比较内容属性是否相同
作者: NUMONE    时间: 2015-12-25 22:13
一般来说,==用于比较基本数据类型,equals()用于比较引用数据类型。

基本数据类型使用==比较他们的值。引用类型使用==比较他们在内存中的地址值。
引用类型使用equals(),大多重写了父类Objet中的equals()比较地址值的方法,而比较内容(例如String,Data等 )。
例如:
String s1="java";
String s2=new String("java");   //new 一个对象,在内存中重新创建了一个。
String s3="java";
结果有: s1==s2  false               s1==s3 true   But,   
             s1.equals(s2)  true                             But,
             s1==s2.intern()    true

intern()这个方法是指,如果对内存中存在这个字符串,就返回该引用,不在重新new 一个。
基本数据类型:byte,short,int,long,float,double,char,boolean
引用数据类型:类,数组,接口
详见:http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html
作者: hyl    时间: 2015-12-25 22:48
引用数据类型,==这个是对地址作比较equals就直接比较的字符串内容。所以一般字符串都用equals方法而不是==,但是数值比较(int,float之类的)就是==更方便一些
作者: jidan    时间: 2015-12-25 22:55
==是比较的是基本类型 比的是数值
equals比较的是引用类型 比的是地址值
作者: river1205    时间: 2015-12-26 15:33
==是基本数据类型中的比较运算符,
equals是Object的方法,本来比较地址值的,引用类型String重写了equals方法比较的是字符串的内容
作者: 一大把手    时间: 2015-12-26 15:50
foolishlovepig 发表于 2015-12-25 18:53
==这个是对地址作比较吧?equals就直接比较的字符串。所以一般字符串都用equals方法而不是==,但是数值比较 ...

==号应该比较的包括地址值和数值,而equals只比较数值吧?
作者: 一大把手    时间: 2015-12-26 15:51
river1205 发表于 2015-12-26 15:33
==是基本数据类型中的比较运算符,
equals是Object的方法,本来比较地址值的,引用类型String重写了equals ...

额,谢谢了
作者: 一江夜雨    时间: 2015-12-26 16:38
解释一下==号,他比较的是一个对象在内存中的地址值, 比如2个字符串对象 String s1 = new String("str"); String s2 = new String("str"); 如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。  equals的情况比较复杂,它是java.lang.Object类中的一个方法。因为java中所有的类都默认继承于Object,所以所有的类都有这个方法。
作者: zhangguangyuan    时间: 2015-12-26 16:54
==这个是对地址作比较吧?equals就直接比较的字符串。所以一般字符串都用equals方法而不是==,但是数值比较(int,float之类的)就是==更方便一些
作者: Zrz_K    时间: 2015-12-26 23:26
==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性




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