java equal 区别_Java中“==”与“equal()”的区别。

本文详细介绍了Java中`==`与`equals()`方法的区别。`==`用于比较基本类型时比较值,而在复合类型(如对象和数组)中比较内存地址。`equals()`在默认情况下与`==`相同,但某些类如String、Integer等重写了该方法以比较内容。示例代码展示了`==`和`equals()`在不同场景下的应用和结果。
摘要由CSDN通过智能技术生成

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 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值