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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一大把手 中级黑马   /  2015-12-25 15:02  /  1250 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

能不能说一下==和equals的区别是什么?

12 个回复

倒序浏览
回复 使用道具 举报
==这个是对地址作比较吧?equals就直接比较的字符串。所以一般字符串都用equals方法而不是==,但是数值比较(int,float之类的)就是==更方便一些
回复 使用道具 举报
==基本数据类型比较的是值,引用数组类型比较的是地址值
equals要看应用类里面又没有重写,Object类中比较的也是地址值,没什么意义,,不过API中很多的类都重写了equals方法.用来比较内容属性是否相同
回复 使用道具 举报
一般来说,==用于比较基本数据类型,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:27
地板
引用数据类型,==这个是对地址作比较equals就直接比较的字符串内容。所以一般字符串都用equals方法而不是==,但是数值比较(int,float之类的)就是==更方便一些
回复 使用道具 举报
jidan 中级黑马 2015-12-25 22:55:53
7#
==是比较的是基本类型 比的是数值
equals比较的是引用类型 比的是地址值
回复 使用道具 举报
==是基本数据类型中的比较运算符,
equals是Object的方法,本来比较地址值的,引用类型String重写了equals方法比较的是字符串的内容
回复 使用道具 举报
foolishlovepig 发表于 2015-12-25 18:53
==这个是对地址作比较吧?equals就直接比较的字符串。所以一般字符串都用equals方法而不是==,但是数值比较 ...

==号应该比较的包括地址值和数值,而equals只比较数值吧?
回复 使用道具 举报
river1205 发表于 2015-12-26 15:33
==是基本数据类型中的比较运算符,
equals是Object的方法,本来比较地址值的,引用类型String重写了equals ...

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