加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

今天就把你们都认识清楚

发布时间:2021-04-18 15:12:05 所属栏目:外闻 来源:互联网
导读:么时候用关系操作符==,什么时候用equals方法? equals方法,为什么报了 空指针 java.lang.NullPointerException? hashCode 方法有什么作用?hashCode 和 equals 的关系? 为什么每个覆盖了equals方法的类中,也必须覆盖hashCode方法? 数据类型 java中的数据类型
  • 么时候用关系操作符==,什么时候用equals方法?
  • equals方法,为什么报了 空指针 java.lang.NullPointerException?
  • hashCode 方法有什么作用?hashCode 和 equals 的关系?
  • 为什么每个覆盖了equals方法的类中,也必须覆盖hashCode方法?

数据类型

java中的数据类型,可分为两类:

1.基本数据类型(原始数据类型)

byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),基础数据类型比较的是他们的值。

2.引用类型(类、接口、数组)

当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址, 对象是放在堆中的,栈中存放的是对象的引用(地址)。由此可见'=='在比较的对象是引用类型时,是对栈中的地址值进行比较的。

关系操作符 ==

java中包含的关系操作符有小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。

==和!=适用所有对象,但是这两个操作符通常在比较对象的时候会出问题:

在这里==和!=比较的是对象的引用。尽管对象的内容相同,但是对象的引用却是不同的,说以n1==n2是false。时,equals方法的重写实现不尽相同,但是重写后一般都是通过对象的内容是否相等 来判断 对象是否相等,对于大多数Java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用

避免equals方法,报空指针

避免equals方法报空指针,先告诉大家,答案是使用Objects.equals(a,b),在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

在默认情况下,对象的equals方法没有重写 调用的是Object类中equals方法

那么我们来写个报错的例子:

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读