Java中的equals和==的区别

本文详细解析了Java中的8种基本数据类型及非基本数据类型,并通过实例对比了==与equals方法的区别,强调了它们在基本类型与引用类型中的不同行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


基本知识:


Java有8种基本的数据类型:

  1. 整型: byte(1 byte)、 short(2 byte) 、int(4 byte)、 long(8 byte)
  2. 浮点型: float(4 byte)、double(8 byte)
  3. 字符型: char(2 byte)
  4. 布尔型: boolean(JVM 没有明确规定所占空间,仅规定其值只能取字面值true和false)

非基本数据类型: String、Integer、Double、Date..等


对于基本数据类型的变量:
直接存储的是值,只有==方法==是直接比较其存储的值是否相等没有equals()方法


对于非基本数据类型的变量:
其存储的并不是”值”本身,而是与其关联的对象在内存中的地址;
一般的,都对equals()方法进行了重写,使得equals()比较的是变量所指向的对象的值(内容)。


总结:


对于==:

  1. 如果是作用于基本数据类型的变量,则直接比较其存储的值是否相等
  2. 如果作用的是非基本数据类型的变量,则比较的是其所指向的对象的地址空间的值是否相等(即直接比较所指向对象的地址)

对于equals( ):

  1. 不能作用于基本数据类型的变量;
  2. 对于非基本数据类型的变量,一般地,如果对equals()方法进行了重写,则比较的是所指向的对象的内容;
  3. 对于非基本数据类型的变量,特殊地,如果没有对equals()方法进行重写,则比较的还是所指向的对象的地址。

例子:

int m=3,n=3;
String str1 = new String("hello");
String str2 = new String("hello");
String str3 = str1;
System.out.println(m==n); //true
System.out.println(str1==str2); //false
System.out.println(str1==str3); //true
System.out.println(str1.equals(str2); //true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值