您的位置:首页 > 职场人生

黑马程序员~JAVA中equals和==使用方法对比浅谈之一

2012-07-16 11:08 543 查看
------- android培训java培训、期待与您交流! ----------

以下内容基于JDK1.7环境
**equals两个对象的内容是否相等。
**==比较引用和比较基本数据类型时功能不同:
   |--a.比较引用时,检测是否指向内存中的同一对象。
   |--b.比较基本数据类型时,检测两个值是否相同。
**当equals为true时,==不一定为true
**引用类型的变量在栈中存储的是该变量的地址,而变量本身则存储在堆中。

1、基本数据类型和封装类。
**JDK1.5以上的版本中,基本类型和封装类能自动转化
byte(Byte), boolean(Boolean), char(Character), double (Double), 
float(Float), int(Integer), long(Long), short(Short)
//举例:
int m1=1;
int m2=1;
Integer n1 =new Integer (1);
Integer n2 =new Integer (1);

//(1).先说==
System.out.println(m1==m2);//true内容相同
System.out.println(m1==n1);//true内容相同
System.out.println(n1==n2);//false两个对象,地址不同,==比较的是2个对象的地址

//(2).再说equals
//System.out.println(m1.equals(m2));//不能比较,equals()方法调用者不能为基本数据类型
//System.out.println(m1.equals(n1));//不能比较,equals()方法调用者不能为基本数据类型
System.out.println(n1.equals(n2));//true两个对象,地址不同,内容相同,equals比较的是两个对象的内容
System.out.println(n1.equals(m1));//true内容相同

//注意这个,不是new新对象,所以结果是true
Integer j1 =1;
Integer j2 =1;
System.out.println(j1==j2);//true不是两个独立对象,只比较内容

2.自己定义的类

自定义的类继承object,而object中的equals就是用==来实现的,
在没有重写equals的情况下,equals和==是一样的,都是比较地址。

  ------- android培训java培训、期待与您交流! ----------  详细请查看:http://edu.csdn.net/heima/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息