黑马程序员技术交流社区
标题:
equals和“==”问题
[打印本页]
作者:
子康JAVA
时间:
2013-6-5 23:31
标题:
equals和“==”问题
equals
和
“==”
有什么区别,分别在什么情况下使用?
作者:
yp324
时间:
2013-6-5 23:48
==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
eqauls 与 = =之异同
1)比较方式角度:
= =是面向过程的操作符;equals是面向对象的操作符
= =不属于任何类,equals则是任何类(在Java中)的一个方法;
我们可以1)Primitive1 (基本类型)= = Primitive2(基本类型);
2)Object Reference1(对象引用)= = Object Reference2(对象引用)
3)Object Reference1 (对象引用) .equals(Object Reference2 (对象引用))
这三种比较
但却不能Primitive1 (基本类型).equals( Primitive2(基本类型));
对于基本类型,没有面向对象中发送消息一说,自然也不会有
方法成员。
2)比较目的角度:
1) 如果要比较两个基本类型是否相等,请用= =;
2) 如果要比较两个对象引用是否相等,请用= =;
3) 如果要比较两个对象(逻辑上)是否一致,请用equals;
作者:
黄辉
时间:
2013-6-6 02:16
==和equals最大区别是“==”在判断两者是否在同一个内存空间,而equals是一种多用于引用类型判断值是否相等的。
所以==多用于基本数据类型的比较,equals多用于引用数据类型的比较。
作者:
穆爱明
时间:
2013-6-6 07:40
==和equals()方法都可以用来判断字符串,但所判断的内容是有差别的。简单说,==判断的是两个字符串对象在内存中的首地址,就是判断是否是同一个字符串对象,而equals()方法判断的是两个字符串对象的值是否相等。例如:
String str1 = new String("我是黑马人");
String str2 = new String("我是黑马人");
if (str1 == str2) {
System.out.println("两个字符串相同");
} else {
System.out.println("两个字符串不同");
}
if (str1.equals(str2)) {
System.out.println("两个字符串值相同");
} else {
System.out.println("连个字符串值不同");
}
复制代码
输出结果:两个字符串不同
两个字符串值相同
看论坛帖子:
http://bbs.itheima.com/forum.php ... mp;page=1#pid340597
作者:
紫衣侯
时间:
2013-6-6 08:56
在除string类的其他类中,== 和equals 并无区别都是比较内存地址,因为==是比较内存地址,而它们的equals方法都是继承的object类的equals方法,object的equals方法也是==实现的。而 string类重写了 equals方法,所以可以比较值的相等。只要记住这一点就行了
作者:
桉树
时间:
2013-6-6 12:32
== 是比较是否是同一个内存地址。而equals方法则是根据重写 Object 类中的equals 方法,来实现特定值的比较。
如:
String a = "abc" ;
String b = new String("abc") ;
如果a == b 则 为false, a.equals(b) 则为true;
作者:
Hyo_Ri
时间:
2013-6-6 15:22
== 在比较基本类型的变量时是比较值是否相等,如果比较的对象时引用类型则比较的是否指向同一对象,也就是比较是否是同一内存地址;我们常用的是String类的equals方法,它重写 了Object 类中的equals 方法,只要比较的两个对象的值相等就返回true。
作者:
赵熠东(赵东东)
时间:
2013-6-6 20:43
一般来说equals是比较两个对象的值是否相等,==是比较两个引用是否指向同一个对象,有点印象就行,做东西出错的时候就明白怎么回事了。
作者:
iamlch@qq.com
时间:
2013-6-6 21:46
equals:比计较对象的内容
作者:
张禄宇
时间:
2013-6-9 13:18
==是判断引用是否相等 equals是比较值 是否相等
作者:
袁梦希
时间:
2013-6-9 15:09
楼主你好 如果帖子的问题已经解决,请把帖子的类型改为“已解决”。{:soso_e102:}
作者:
袁梦希
时间:
2013-6-9 15:09
桉树 发表于 2013-6-6 12:32
== 是比较是否是同一个内存地址。而equals方法则是根据重写 Object 类中的equals 方法,来实现特定值的比较 ...
加油 小鬼
作者:
黑马王瑞
时间:
2013-6-11 17:29
==是比较两个引用是否是指向同一个内存空间,而equals是比较两个对象的值是否一样,这种情况大部分出现在String中.只要记住判断值是否相等的时候用equals就可以了.
作者:
Changer_s
时间:
2013-6-12 12:35
http://blog.csdn.net/u010859707/article/details/9078741
我写的,应该对你理解有很大帮助
作者:
郭天龚
时间:
2013-6-12 15:45
== 判断两个对象的地址值是否相等,
而equals多用于引用数据类型的比较。在字符串中equals方法原来比较两对象的字符序列是否相同。
其实这个方法是重写Object类中的equals方法,所以这个方法在对于不同类型的对象中,他比较的内容也是不同的。
比如你定义了一个Person类,覆盖了equals方法来判读两个是是否为同一个人,判断的条件是,姓名和年龄相同为同一个人。
而别人也定义了一个person类,人家判断的条件是,姓名相同,年龄相同。出生地相同才算同一个人。
所以对于equals方法呢要看对于什么类型的对象。
作者:
袁梦希
时间:
2013-6-12 19:26
楼主你好 如果问题已经解决 请把帖子的类型改为已解决 然后会给你发几个粽子吃
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2