Java中的==和equals浅见

来源:互联网 发布:网络打印服务器 编辑:程序博客网 时间:2024/06/05 08:53

Java中的数据类型可分为两类:
1.基本数据类型:byte short char int long float double boolean
他们之间的比较应用双等号(==),比较的是它们的值。
2.复合数据类型
当他们用==进行比较时,比较的是他们在内存中的存放地址。
-128到127内和Integer都是同一个对象引用
// Integer t1 = 127;
// Integer t2 = 127;
// System.out.println(t1==t2); //true调用Integer.valueOf
// System.out.println(t1.equals(t2)); //true
  
// Integer t1 = new Integer(127);
// Integer t2 = new Integer(127);
// System.out.println(t1==t2);  //false
// System.out.println(t1.equals(t2)); //true
  
 int t1 = 127;
 Integer t2 = 127;
 System.out.println(t1==t2);  //true
 System.out.println(t2==t1);  //true
如果在比较数值时,如果有一方是基本类型,那么把另外那头拆包,比较数值。
而只有两头都是包装类型时,才比较引用。
new Integer()返回的永远是不同的对象,但当整数范围在-128到127内,Integer.valueOf返回的是同一个对象。


对于复合数据类型之间进行equals比较,在没有覆盖equals方法的情况下,他们之间的比较还是基于内存的存放地址值,因为object的equals方法是==进行比较的。
equals方法用于对象内容的比较。
Data File String 和基本数据类型的包装类重写了equals方法。

 

 

 

 

 


 

原创粉丝点击