首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

equals() ? ==? hashCode()? 今天就把你们都认识清楚

2.引用类型(类、接口、数组) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址, 对象是放在堆中的,栈中存放的是对象引用(地址)。...由此可见'=='在比较的对象引用类型时,是栈中的地址值进行比较的。...如果根据 equals(Object) 方法,两个对象是相等的,那么这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。...如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么这两个对象中的任一对象调用 hashCode 方法 不要求 一定生成不同的整数结果。...(例如,String类equals方法的重写就是逐个比较字符) 不重写的情况下,对象的equals方法 调用的是Object类中equals方法,在条件左边为Null时会报空指针,使用Objects.equals

42750

java.lang.NullPointerException出现的几种原因及解决方案

主要介绍了 java.lang.NullPointerException 出现的几种原因及解决方案 , 本文给大家介绍的非常详细,大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...java.lang.NullPointerException 出现的几种原因: 1、字符串变量未初始化 2、接口类型的对象没有用具体的类初始化 比如: Map map // 会报错...} 5、优先使用String.valueOf()方法代替toString() 当程序代码需要对象的字符串表示形式时,请避免使用该对象的 toString 方法。...如果你的对象引用等于 null , NullPointerException 则会抛出,使用静态 String.valueOf 方法,该方法不会抛出任 何异常并打印 "null" 6、class...被声明了类型,默认 class = null 这样在调用 class 中方法的时候系统只能给你个空指针异常, 给其实例化就好了: class = new Class(); 7、返回null方法的返回值不要定义成为一般的类型

1.4K31

Java自动拆箱空指针异常,救火队员上线

接口返回的userId为null时,强转这块就抛出空指针异常: Exception in thread "main" java.lang.NullPointerException at com.choupangxia.box.BoxTest.main...原因分析 最初大家可能会疑惑,抛出异常的代码都没有对象方法调用,怎么会出现空指针呢? 这中间主要涉及到的就是一个自动拆箱操作。是否是拆箱导致的呢?我们来通过字节码看一下。...,编号2进行了装箱操作,将原始类型int,装箱成了Integer,调用方法为Integer.valueOf;而编号7进行了拆箱操作将Integer类型转换成了int类型,调用方法为Integer.intValue...装箱时通常会调用包装类的valueOf方法,而拆箱时通常会调用包装类的xxxValue()方法,其中xxx为类似boolean/long/int等。...在Java中null是一个特殊的值,可以赋值给任何引用类型,也可以转化为任何引用类型。

1.4K30

java.lang.NullPointerException出现的几种原因以及解决

java.lang.NullPointerException出现的几种原因: 1、字符串变量未初始化 2、接口类型的对象没有用具体的类初始化,比如: Map map // 会报错 Map map...} 5、优先使用String.valueOf()方法代替toString() 当程序代码需要对象的字符串表示形式时,请避免使用该对象的toString方法。...如果你的对象引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印”null” 6、class被声明了类型, 默认...class = null; 这样在调用class中方法的时候系统只能给你个空指针异常, 给其实例化就好了:class = new Class(); 7、返回null方法的返回值不要定义成为一般的类型...(s)就可以避免这个问题,不过变量先进行判空后再进行操作更好,尽量避免返回null方法的返回值不要定义成为一般的类型,用数组。

86120

Java异常详解

, 相当于将处理动作交给上级调用者 四、自定义异常类 注意事项 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,我帮助很大。...当程序运行时,如果出现了一些不可预料的情况,如除零错误、空指针引用等,程序会抛出一个异常对象。异常可以被捕获并进行相应的处理,以防止程序崩溃或产生错误的结果。...一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他操作系统的损害,保证整个程序运行的安全性。...使用 try 负责回收资源 刚才的代码可以有一种等价写法, 将 Scanner 对象在 try 的 ( ) 中创建, 就能保证在 try 执行完毕后自动调用 Scanner的 close 方法. try...关于 “调用栈” 方法之间是存在相互调用关系的, 这种调用关系我们可以用 “调用栈” 来描述. 在 JVM 中有一块内存空间称为 “虚拟机栈” 专门存储方法之间的调用关系.

10310

来了来了,Java14它真的来了

() || instanceof Collection && ((Collection) o).isEmpty(); } 现在您可以在使用 instanceof 检查时直接将值赋给变量,并其执行进一步调用...在 Java 中,编译器和运行时环境都不支持处理零引用。 这些恼人的异常可以通过各种变通方法来避免。 最简单的方法是将检查设置为零。 不幸的是,这个过程非常繁琐,当我们需要它的时候我们往往会忘记它。...: Cannot invoke "Person.name()" because "" is null 不幸的是,当一个空参数时,目前没有方法引用的指示: Stream.of( man...但是,如本例所示,如果将每个流方法调用放在新行中,那么麻烦的代码行可以很快地缩小范围。...Listing 3 清单3 int calculate() { Integer a = 2, b = 4, x = null; return a + b \* x; } calculate

92300

来了来了,Java14 它真的来了!

isBlank() || instanceof Collection && ((Collection) o).isEmpty(); } 现在您可以在使用 instanceof 检查时直接将值赋给变量,并其执行进一步调用...在 Java 中,编译器和运行时环境都不支持处理零引用。这些恼人的异常可以通过各种变通方法来避免。最简单的方法是将检查设置为零。不幸的是,这个过程非常繁琐,当我们需要它的时候我们往往会忘记它。...: Cannot invoke "Person.name()" because "" is null 不幸的是,当一个空参数时,目前没有方法引用的指示: Stream.of( man...但是,如本例所示,如果将每个流方法调用放在新行中,那么麻烦的代码行可以很快地缩小范围。...Listing 3 清单3 int calculate() { Integer a = 2, b = 4, x = null; return a + b * x; } calculate();

54920

【Java】已解决java.lang.NullPointerException异常

一、问题背景 在Java编程中,java.lang.NullPointerException(空指针异常)是一种常见的运行时异常。当应用程序试图在需要对象的地方使用null时,就会抛出这个异常。...这种问题通常发生在访问或修改一个尚未被实例化(即分配内存)的对象的成员时。 二、可能出错的原因 对象未初始化:在引用对象之前,没有为其分配内存。...对象被设置为null:在程序的某个地方,对象被显式地设置为null,随后又被使用。 方法返回null:一个方法被期望返回一个对象,但实际上返回了null,而调用者没有检查这一点。...,因此尝试调用toUpperCase()方法时会抛出NullPointerException。...检查返回值:如果方法可能返回null,在调用方法后检查返回值是否为null

13010

Java基础——类&对象

类是某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。...age; } 类的创建 类创建对象的语法: 类名 对象名称 = new 类名(); 空对象 一个引用变量没有通过new分配内存空间,这个对象就是空对象,Java使用关键字null表示空对象。...当调用一个空对象的实例变量或实例方法时,会抛出空指针异常NullPointException String str = null; System.out.println(str.length...当一个对象被创建后,对象保存在堆内存中,Java程序不允许直接访问堆内存的对象,不管是数组还是对象,当程序访问引用变量的成员值或者方法时,实际上是访问引用变量的所指向的数组或者对象的成员变量或者方法。...关键字this this指向调用方法对象,主要作用让类中的方法可以访问类中的另一个方法或者实例变量 对象的打印和比较 (1)toString()方法 (2)对象的比较操作 ==对于基本数据类型比较的是双方的值

47520

Java中常见的异常类型

EnumConstantNotPresentException 尝试使用未定义的枚举值。 IllegalArgumentException 用于调用方法的非法参数。...CloneNotSupportedException 尝试克隆不实现Cloneable接口对象。 IllegalAccessException 类的访问被拒绝。...InstantiationException 尝试创建抽象类或接口对象。 InterruptedException 一个线程已被另一个线程中断。...当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。 java.lang.EnumConstantNotPresentException 枚举常量不存在异常。...当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。

2.1K40

Java中有关Null的9问题

3)我们要澄清一些误解,null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,来看下面的代码: String str = null; //...4)null可以赋值给引用变量,你不能将null赋给基本类型变量,例如int、double、float、boolean。...程序员可能会以为,调用put方法时,自动装箱会自己处理好将int装箱成Interger,但是他忘记了当一个数字没有计数值的时候,HashMap的get()方法将会返回null,而不是0,因为Integer...7)你可能知道不能调用非静态方法来使用一个值为null引用类型变量。...总而言之,记住,null是任何一个引用类型变量的默认值,在java中你不能使用null引用调用任何的instance方法或者instance变量。

1.1K50

【Java探索之旅】基本类型与引用类型 数组的应用 二维数组

文章目录 前言 一、基本类型与引用类型 1.1 区别 1.2 引用变量 1.3 认识null 二、数组的应用场景 2.1 保存数据 2.2 作为方法的参数 2.3 小结 三、二维数组 3.1 概念 3.2...一、基本类型与引用类型 1.1 区别 基本数据类型创建的变量:称为基本变量,该变量空间中直接存放的是其所对应的值; 引用数据类型创建的变量:一般称为对象引用,其空间中存储的是对象所在空间的地址。...array是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址。 引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。...中表示 “空引用” , 也就是一个不指向对象引用 int[] arr = null; System.out.println(arr[0]); // 执行结果 Exception in thread..."main" java.lang.NullPointerException at Test.main(Test.java:6) null 的作用类似于 C 语言中的 NULL (空指针),

7210

Java中有关Null的9件事

3)我们要澄清一些误解,null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,来看下面的代码: Java代码 String str = null...程序员可能会以为,调用put方法时,自动装箱会自己处理好将int装箱成Interger,但是他忘 记了当一个数字没有计数值的时候,HashMap的get()方法将会返回null,而不是0,因为Integer...7)你可能知道不能调用非静态方法来使用一个值为null引用类型变量。...,这时方法可以接收任何引用类型,例如public void print(Object obj)可以这样调用print(null)。...总而言之,记住,null是任何一个引用类型变量的默认值,在java中你不能使用null引用调用任何的instance方法或者 instance变量。

54820

JDK 14即将发布,你所要知道的都在这里!

另一种方法是,从距离最近的NUMA节点开始,按照距离顺序在其他NUMA节点中搜索可用region。 在老年代中,不会尝试对象保存在同一个NUMA节点中。...该接口还可用于设置缓冲的数据量,以及是否应按时间顺序对事件进行排序。为了最大程度地降低分配压力,还可以选择控制是否应为每个事件分配新的事件对象,或者是否可以重用以前的对象。...NPE也可能在方法调用中传递,看下面的代码: x().y().i = 99; 文件名和行号不能指出哪个方法调用返回null。是x()还是y()?...描述 JVM在程序调用引用的位置抛出NPE异常,通过分析程序的字节码指令,JVM可以精确判断哪个变量为空,并在NPE中描述详细信息(根据源代码)。...任何访问已关闭的内存段的尝试都将导致异常。空间和时间安全性检查对于确保内存访问API的安全性至关重要。 通过获取内存访问var句柄可以取消引用与段关联的内存。

95930

Java中有关Null的9件事

3)我们要澄清一些误解,null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,来看下面的代码: String str = null; //...4)null可以赋值给引用变量,你不能将null赋给基本类型变量,例如int、double、float、boolean。...程序员可能会以为,调用put方法时,自动装箱会自己处理好将int装箱成Interger,但是他忘记了当一个数字没有计数值的时候,HashMap的get()方法将会返回null,而不是0,因为Integer...7)你可能知道不能调用非静态方法来使用一个值为null引用类型变量。...总而言之,记住,null是任何一个引用类型变量的默认值,在java中你不能使用null引用调用任何的instance方法或者instance变量。

64920

Android下Activity间通信序列化过程中的深浅拷贝浅析

尝试通过存入 Intent 的 Extras的方式,然而 putExtra 方法并不能 put 一个 object,只能 put 一个 serializable。...那就让这个 DTO(Data Transfer Object)implements serializable 接口吧。没有问题。...然而无法启动 Activity,会有一个 crash 抛出: java.lang.NullPointerException: Expected to unbox a 'int' primitive type...然而 Android 中的 Activity 与 Activity 间的传递对象又有所不同,理论上,都在同一个 Dalvik VM 中运行,相互的类引用都是可以访问到的。...总结 以上就是这篇文章的全部内容了,希望本文的内容大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家ZaLou.Cn的支持。

67540
领券