Java 面试常客:equals() 与 ==

6 篇文章 0 订阅

写在前面,在写这边博客前查了很多资料,只是站在巨人的肩膀上,自己总结了一些自己常用的知识,想给自己和他人一个正确的参考,本人能力有限,有错误的地方请批评指正,不吝赐教。

一、Java 的 8 大基本类型

  • bit: Binary digit(二进制数位)的缩写,意为“位”或“比特”,是计算机运算的基础,计算机中最小的存储单元,不能够单独寻址 ;一般用0和1表示 。
  • byte: 字节,是计算机文件大小的基本计算单位,最小的可寻址存储单元;

image-20210817160708154

类型占用存储空间数值范围备注
byte1字节-128~127所有基本数据类型使用前必须初始化
short2字节-215~215-1
int4字节-231~231-1
long8字节-263~263-1
float4字节-3.403E38~3.403E38
double8字节-1.798E308~1.798E308
char2字节0~216-1
booleantrue或者false

二、JVM 变量存放的地址

image-20210818152334576
​ 在方法中声明的变量,即局部变量,每当程序启动时,JVM 会为该程序 main() 方法在虚拟机栈中申请一块内存建立一个方法栈,其方法中声明的变量就放在该栈中,不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存;对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被分配在堆上。当方法执行结束 JVM 会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束。

​ 在类中声明的变量,即成员变量,当声明的是基本数据类型时,变量及其变量名存放在堆中;引用类型时,其声明的变量存放一个内存地址,该地址指向所引用的对象,引用的变量名和对应的对象仍然放在相应的堆中;成员变量可细分为静态成员变量和普通成员变量,静态成员变量类属于类,类可以直接访问,存储在方法区中;普通成员变量属于类对象,必须声明对象之后,通过对象才能访问,存储在堆中。

三、== 与 equals

==:关系操作符,计算两个操作数之间的关系,返回一个boolean类型的结果。

equals:Object 类的一个方法,用来比较两个对象之间的关系,返回一个boolean类型的结果。

​ == 比较的是内存地址,equals() 在未重写前和 == 作用一样,在重写后一般判断内存地址指向的对象的内容是否相同。在 Object 类中的 equals() 也是返回 == 进行比较的,所有很多情况下需要类对象重写 equals() 方法。

​ 对于基本类型来说,== 比较的是值是否相等;对于引用类型来说,== 比较的是两个引用是否指向同⼀个对象地址(两者在堆内存地址是否指向同⼀个地方)。

​ String 类型往往被认为是基本数据类型,开发中使用频率超高,在刚学 Java 时,我以为它也是 Java 的八大数据类型之一,有一次还室友理论了一番,铁定它就是基本数据类型,现在想想,哈哈,可笑。String 类重写了 equals(),逐个比较两个 String 对象的每个字符是否相同。String 类型是特殊的,有个字符串常量池的概念。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fzshuai25

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

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

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

打赏作者

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

抵扣说明:

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

余额充值