java中的==和equals()

简介: ==和equals()都是比较相等的,那有什么区别和联系; 1:基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char 使用==比较基本数据类型时比较的是数值是不是相等; 例如: ...

==和equals()都是比较相等的,那有什么区别和联系

1:基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char

使用==比较基本数据类型时比较的是数值是不是相等;

例如:

 1 package equals;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5         int a=3;
 6         int b=4;
 7         int c=3;
 8         b=c;
 9         System.out.println(a==c);
10         System.out.println(a==b);
11     }
12 }

 

因为基本数据类型是在栈中的,理解堆栈就好理解这个问题,具体参考我的另一篇博客》》》堆栈     http://www.cnblogs.com/GH0522/p/8193650.html

 

 那么当比较两个对象的时候比较的是 对象在内存的位置

 1 package equals;
 2 
 3 public class Test2 {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Double d = new Double(12.2);
 8         Double d2 = new Double(12.2);
 9         System.out.println(d==d2);
10         
11     }
12 }

 

 因为这两个对象在堆中都拥有一个不同的地址虽然里面放的数值是一样的;

 

JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。例如String重写的equals方法就是比较内存中存放的值。

 

 

 1 package equals;
 2 
 3 public class Test2 {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         String a=new String("a");
 8         String b=new String("a");
 9         System.out.println(a==b);
10         System.out.println(a.equals(b));
11     }
12 }

 

 

 

 看其String类中被重写的equals

 

没被重写的Object中的equals则是实现自==

 

 

欢迎大家一起说出自己的想法。
目录
相关文章
|
5月前
|
Java
Java中的equals()与==的区别与用法
【7月更文挑战第28天】
75 12
|
2月前
|
存储 Java C++
java中“==”和equals,究竟比的是什么
java中“==”和equals,究竟比的是什么
40 3
java中“==”和equals,究竟比的是什么
|
4月前
|
Java
【Java基础面试二十三】、==和equals()有什么区别?
这篇文章区分了Java中的`==`运算符和`equals()`方法:`==`用于基本数据类型时比较值是否相等,用于引用类型时比较内存地址是否相同;而`equals()`默认实现按内存地址比较,但通常被重写以根据对象内容比较是否相等。
【Java基础面试二十三】、==和equals()有什么区别?
|
4月前
|
Java
【Java基础面试二十一】、说一说hashCode()和equals()的关系
这篇文章讨论了Java中`hashCode()`和`equals()`方法之间的关系,强调如果两个对象相等,它们必须有相同的哈希码,但有相同哈希码的对象未必相等,并解释了这一关系在HashSet集合中判断元素是否重复的应用场景。
【Java基础面试二十一】、说一说hashCode()和equals()的关系
|
4月前
|
存储 Java
|
4月前
|
Java
【Java基础面试二十二】、为什么要重写hashCode()和equals()?
这篇文章解释了为什么需要重写`hashCode()`和`equals()`方法:因为Object类的`equals()`默认使用`==`比较,这在业务中通常是不够的,我们需要根据对象内容来比较相等性;同时,为了保持`hashCode()`与`equals()`的联动关系,一旦重写了`equals()`,通常也需要重写`hashCode()`。
【Java基础面试二十二】、为什么要重写hashCode()和equals()?
|
5月前
|
存储 Java 索引
java 中为什么重写 equals 后需要重写 hashCode
java 中为什么重写 equals 后需要重写 hashCode
66 8
|
4月前
|
存储 Java 索引
|
5月前
|
Java
Java中的Object类 ( 详解toString方法 | equals方法 )
Java中的Object类 ( 详解toString方法 | equals方法 )
|
7月前
|
Java
【JAVA学习之路 | 基础篇】Object类及重写的equals()与toString()
【JAVA学习之路 | 基础篇】Object类及重写的equals()与toString()