黑马程序员技术交流社区
标题:
"=="和equals方法究竟有什么区别?
[打印本页]
作者:
仵先进
时间:
2012-2-16 21:56
标题:
"=="和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等,equals难道只能比较字符串吗???
作者:
戚雪晖
时间:
2012-2-16 22:12
http://bbs.itheima.com/forum.php ... %3D17%26typeid%3D17
这里已经解释过了,楼主可以看这个帖子
作者:
foxpeter
时间:
2012-2-16 22:12
== 比较的是引用是否相同
equals的默认实现也是比较的引用
不过可以自己重写equals方法 比如String类就重写了 重写之后可以按照自己的方式实现相等的比较
作者:
王康
时间:
2012-2-17 10:31
public class StringAPIDemo {
public static void main(String[] args)
{
String str1="hello"; //String类型变量
char c[]=str1.toCharArray(); //把字符串转换成字符数组
for (int i=0;i<c.length ; i++)
{
System.out.print(c+"\t"); //\t为制表符 h e l l o
}
System.out.println(""); //换行
String str2=new String(c); //把数组转换成字符串
String str3=new String(c,0,3); //截取字符串str2,从下标0开始,截取3个字符长度的字符.
System.out.println(str2); // hello
System.out.println(str3); // hel
}
}
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
作者:
陈伟
时间:
2012-2-17 11:08
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
作者:
黄锦成
时间:
2012-2-17 16:39
equals可以用来比较Integer等包装类的内容。你也可以再自定义类中复写equals方法,按照自己的方式来比较
作者:
唐溪永
时间:
2012-2-17 16:59
本帖最后由 yiyong 于 2012-2-17 17:02 编辑
sun设计equals方法的目的是 比较两个对象是否相等;
public boolean equals(Object obj){
return (this==obj);
}
==两边如果是两个引用类型,比较的是这两个引用的内存地址.如果内存地址一样,返回true,如果内存地址不同返回false.
equals方法比较的是两个对象的内存地址,但是实际应用中应该比较两个对象的内容.所以equals方法需要重写
==就像1=1似的,跟内存地址没多大关系,就是比较内容啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2