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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙汇川 黑马帝   /  2012-2-16 12:04  /  3381 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本来是个问题,后来找到了答案,在这里跟大家分享一下,不很明白的看一下。

"=="与"equls"   

equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。 ==用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true ;而在比较引用时,如果引用指向内存中的同一对象,结果为true

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

4 个回复

倒序浏览
运用在基本数据类型时  两者没什么区别,都是比的值是否相等   建议使用 ==
运用在引用数据类型时  ==比的是引用也就是指向的内存地址是否相等    equals比的是值也就是你说的内容是否相等。并不是光你说的String类是这样  只要是引用数据类型

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
==与equals的区别

==是用来判断数据存放的地址是否相同
equals是用来判断数据存放地址中的内容是否相同

通俗点的讲吧,==就是比较两个对象的在内存中的地址是否是同一个地址。例如:String str1="abc"; String str2 = str1;那么str1==str2 为 true.它们指向的就是同一个地址。而equals 是比较两个对象的内容。

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报

==和equals是不等价的
指示其他某个对象是否与此对象“相等”。
对于字符串的创建比较特殊,因为字符串还有一个字符串池的概念:
String str1="abc";
String str2="abc";
System.out.println(str1==str2);//此时会返回true
另外一种写法是:
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1==str2);//此时会返回false
这就是字符串池的知识了,如果是原始类型的话,其实用==和用equals基本上都等得到同样的结果,
建议判断两个引用类型的话,最好用equals方法。
equals 方法在非空对象引用上实现相等关系: (以下是equals方法在javaSE中的原话)

自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
简单点理解:
==:比较的对象的内存地址是否相同,也就是说两者是否为同一对象。
equals方法:equals比较的是两者的内容是否相同
大多数情况下(就是没重写equals的情况)==与equals是等价的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马