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则是实现自==

 

 

欢迎大家一起说出自己的想法。
目录
相关文章
|
30天前
|
Java
java equals和==
==是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法 public boolean equals(0bjectobj):参数可以是任何对象,只有参数是一个字符串并且内 容相同的才会给true;否则返回false 注意事项: 1.任何对象都能用object进行接收。 2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。 3.如果比较双方一个常量一个变量,推荐把常量字符串写在前面。 推荐:"abc".equals(str) 不推荐:str.equals("abc") public boolean egualsIgnoreCas
10 1
|
1月前
|
Java
Java中常见需要重写equals方法的类
Java中常见需要重写equals方法的类
|
3月前
|
Java
Java中 ==与equals的区别
Java中 ==与equals的区别
16 1
|
4月前
|
Java
JAVA中比较对象是否相等的方式是什么?为什么重写equals就一定要重写hashcode?百天百题(3/100)
JAVA中比较对象是否相等的方式是什么?为什么重写equals就一定要重写hashcode?
|
4月前
|
存储 算法 Java
史上最全的Java容器集合之equals 和 hashCode
史上最全的Java容器集合之equals 和 hashCode
37 0
|
5月前
|
Java
在Java语言中,==、equals 和 equalsIgnoreCase 是用于比较对象或值的三个不同的方法。
在Java语言中,==、equals 和 equalsIgnoreCase 是用于比较对象或值的三个不同的方法。
|
6月前
|
Java
【Java用法】Java 语言规范要求 equals 方法具有的特性
【Java用法】Java 语言规范要求 equals 方法具有的特性
36 0
|
7月前
|
存储 算法 Java
Java 中的 == 运算符、equals 方法和 hashCode 方法
HashMap 中键是不可以重复的,因此它的键就必须是不同的对象,那么这个时候就先用计算速度快的 hashCode 进行比较,若哈希值都不相等,那么这两个对象必然不相等,若是相等的,那么这个就有两种可能出现,一种情况是这两个对象是真的相等,另外一种情况就是出现了罕见的“哈希冲突”现象,那么这个时候就轮到 equals 来进行判断了!在 HashMap 中,键是不可以重复的,也就是说,它们的键都是不相同的,因此就要判断不同对象是否为同一对象。因此,哈希值可以用于判断两个对象是否不等。
70 1
|
8月前
|
Java
Java面向对象中 Object类的详解和其中的equals()和toString()方法的详解
Java面向对象中 Object类的详解和其中的equals()和toString()方法的详解
39 0