我是靠谱客的博主 冷傲故事,最近开发中收集的这篇文章主要介绍java里的==和equals,int和Integer的相等判断,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java里的==和equals,int和Integer的相等判断

1、“==表示比较地址,equals表示比较属性”这句话是错的

论证为什么是错的,思考一个问题:int a = 1; int b = 1; a == b 是true还是false?按照上面话,比较的是地址,自然是false了,但实际情况却是true,可以得出上面前半句是错误的

代码

int a = 1;
int b = 1;
System.out.println("a==b -> " + (a==b));

结果

a==b ->true
2、==表示真正的意思是什么

从概念方面来说:

  • 基本数据类型:变量名指向具体的数值
  • 引用类型:变量名指向存储数据的内存地址,即变量名指向hash值

从内存构建方面来说:

  • 基本数据类型:变量声明了,jvm就会立刻给它分内存空间
  • 引用类型:声明时,不会立刻分配内存,而是存储了一个内存地址,指向内存中的对象,内存中的对象有三部分组成:对象头+实例数据+对齐数据

当基本数据类型使用 == 比较时,由于变量名指向的是具体的数值,比较的是值是否相等,而应用类型使用 == 比较时,由于变量名指向的是内存地址,拿两个地址来比较,这样就造成了 == 是比较地址的错误。

3、equals方法是针对引用类型比较的,基本数据类型没有equals方法

equals方法是针对引用类型比较的,基本数据类型没有equals方法,来自于所有类的祖先Object类,判断成员变量是否相等使用equals方法,equals方法需要重写用来比较每个成员变量是否相等。

4、“重写equals方法就需要重写hashCode方法”也是错误的

既然重写了equals方法,就可以判断成员变量是否相等,为什么要

最后

以上就是冷傲故事为你收集整理的java里的==和equals,int和Integer的相等判断的全部内容,希望文章能够帮你解决java里的==和equals,int和Integer的相等判断所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部