黑马程序员~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/
以下内容基于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/
相关文章推荐
- 黑马程序员~JAVA中equals和==使用方法对比浅谈之二
- Java 中正确使用 hashCode 和 equals 方法
- Effective Java(避免使用最终方法、覆盖equals时请遵守通用约定)
- Java 中正确使用 hashCode 和 equals 方法
- Java equals()方法使用详解及总结
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- Java中的equals方法和比较运算符”==“的使用和比较
- Effective Java(避免使用最终方法、覆盖equals时请遵守通用约定)
- 【转】Java 中正确使用 hashCode 和 equals 方法
- Java中判断对象是否相等的equals()方法使用教程
- JAVA中HashCode和equals方法的使用
- Java 中正确使用 hashCode 和 equals 方法
- java中==与equals()方法的区别与使用
- 在java中,对比字符串时使用==与使用equals的区别
- java数组使用equals()方法报空指针问题
- 浅谈Java数组的一些使用方法及堆栈存储
- Java 中正确使用 hashCode 和 equals 方法
- 浅谈对java中的hashset和Treeset 中重写equals()方法的不同及用法
- Effective Java(避免使用最终方法、覆盖equals时请遵守通用约定)
- Java中Equals使用方法汇总