Java 的 == 和 equals 的区别是什么

本文介绍了Java中`==`符号和`equals()`方法的使用和区别。`==`用于比较基本类型值或对象引用,而`equals()`默认比较对象引用,但在许多类中如String和Integer被重写以比较内容。要注意`equals()`在比较可能为null的对象时需谨慎处理,可以使用Objects.equals()进行安全比较。
摘要由CSDN通过智能技术生成

目录

一、Java 的 == 符号使用方法

二、Java 的 equals 函数用法

三、Java 的 == 和 equals 的区别


 

一、Java 的 == 符号使用方法

Java中的"=="符号用于比较两个变量或对象是否相等。它可以用于基本数据类型(例如int,double)和引用类型(例如String,Object)。在比较基本数据类型时,它比较它们的值;而在比较引用类型时,它比较它们的引用地址。以下是一些示例:

int a = 5;
int b = 5;
if (a == b) {
   System.out.println("a and b are equal");
}

String s1 = new String("hello");
String s2 = new String("hello");
if (s1 == s2) {
   System.out.println("s1 and s2 point to the same object");
}

在第一个示例中,由于a和b都具有相同的值,因此条件为true。在第二个示例中,尽管s1和s2具有相同的值,但它们是两个不同的String对象,因此它们的引用地址不同,因此条件为false。要比较引用类型的值,请使用equals()方法。

 

二、Java 的 equals 函数用法

Java中的equals()方法用于比较两个对象是否相等。默认情况下,该方法比较对象的引用地址,即它们是否是同一个对象。但是,对于许多类而言,特别是包装类和字符串,equals()方法已经被重写(overridden),以允许比较它们的值而不是它们的引用地址。

以下是使用equals()方法来比较对象值的示例:

String s1 = new String("hello");
String s2 = new String("hello");
if (s1.equals(s2)) {
   System.out.println("s1 and s2 are equal");
}

Integer i1 = new Integer(5);
Integer i2 = new Integer(5);
if (i1.equals(i2)) {
   System.out.println("i1 and i2 are equal");
}

在第一个示例中,尽管s1和s2是两个不同的String对象,但它们具有相同的值,因此调用equals()方法将返回true。在第二个示例中,i1和i2也是两个不同的Integer对象,但它们具有相同的值,因此调用equals()方法将返回true。

需要注意的是,如果比较的两个对象为null,则调用它们的equals()方法将导致空指针异常。因此,应该在比较之前检查对象是否为null,或者使用Objects.equals()方法进行比较。

 

三、Java 的 == 和 equals 的区别

Java中的“==”和“equals()”都可以用于比较两个对象是否相等,但它们的比较方式不同。

"=="是一个操作符,用于比较基本类型或对象的引用地址。如果两个基本数据类型具有相同的值或两个对象具有相同的引用,则"=="运算符返回true;否则返回false。例如:

int a = 5;
int b = 5;
String str1 = "hello";
String str2 = "hello";

if (a == b) {
    System.out.println("a and b are equal");
}

if (str1 == str2) {
    System.out.println("str1 and str2 are equal");
}

在上面的示例中,由于变量a和b都具有相同的值,因此条件为true。而由于变量str1和str2指向相同的字符串对象,因此条件也为true。

相反,equals()方法是Object类的一个方法,用于比较两个对象的内容是否相同。根据需要,可以在子类中覆盖该方法以提供自定义相等判断逻辑。例如:

String str1 = new String("hello");
String str2 = new String("hello");

if (str1.equals(str2)) {
    System.out.println("str1 and str2 have the same content");
}

在上面的示例中,尽管str1和str2是两个不同的对象,但它们包含相同的字符串内容,因此使用equals()方法进行比较会返回true。

综上所述,"=="比较基本类型的值或对象的引用地址,而equals()比较两个对象的内容是否相同。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨荧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值