java equal 区别_Java中“==”与“equal()”的区别。
发布日期:2021-06-24 11:34:03 浏览次数:2 分类:技术文章

本文共 1040 字,大约阅读时间需要 3 分钟。

1“==”

在基本数据类型:(byte,short,char,int,long,float,double,boolean) 中,“==”都是 比较的他们的值。

在复合数据类型 :(对象,数组) 中“==”都是比较的的内存地址(也就是堆内存地址)

对于复合数据类型,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。

2,equal

JAVA当中所有的类都是继承于Object这个超类的,在Object类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,

但在一些类库当中这个方法被复写了,如String、Integer、Date。在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

所以说,对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,

跟双等号(==)的结果相同;如果被复写,按照复写的要求来。

3,== 与equal的区别

==:比较的是两个字符串内存地址的数值是否相等,属于数值比较;

equals():比较的是两个字符串的内容,属于内容比较。

所以看一下以下代码:

1 public class StringDemo {

2     public static void main(String args[]) {

3         String str1 = "Hello";

4         String str2 = new String("Hello");

5         String str3 = str2; // 引用传递

6         System.out.println(str1 == str2); // false (比的是地址)

7         System.out.println(str1 == str3); // false (比的是地址)

8         System.out.println(str2 == str3); // true (比的是地址)

9         System.out.println(str1.equals(str2)); // true (比的是值)

10         System.out.println(str1.equals(str3)); // true (比的是值)

11         System.out.println(str2.equals(str3)); // true  (比的是值)

12     }

13 }

转载地址:https://blog.csdn.net/weixin_32541333/article/details/114454988 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java cloud_Spring Cloud 理论篇
下一篇:java8 stream to map_java8 stream colloctors的toMap用法

发表评论

最新留言

不错!
[***.144.177.141]2024年04月10日 04时42分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章