首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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.3K31

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方法的返回值不要定义成为一般的类型,用数组。

75920
您找到你想要的搜索结果了吗?
是的
没有找到

Java类集框架详细汇总

System.out.println("----------分割线----------"); all.forEach(System.out::println); //方法引用部分的引用构造方法...,则会报错:java.lang.NullPointerException Map map = Map.of("one",1,"two",null);...} 在使用put方法进行数据保存的时候会调用putVal方法,同时会将key进行哈希处理(生成hash码) 而putVal()方法为了方便数据保存会将数据封装为一个Node节点类对象,而在使用putVal...()方法的操作过程会调用reasize()方法进行扩容; 3)容量扩充 当保存的数据超过既定的存储容量则会进行扩容,原则如下: 常量地址:DEFAULT_INITIAL_CAPACITY;作为初始化的容量配置...Map.Entry接口封装的二元偶对象,所以就必须采用Map集合的迭代输出; 使得Map接口中的entrySet(),将Map集合变为Set集合; 取得Set接口实例后就可以利用iterator方法取得

68040

Java框架类集结构-底层分析

System.out.println("----------分割线----------"); all.forEach(System.out::println); //方法引用部分的引用构造方法...,则会报错:java.lang.NullPointerException Map map = Map.of("one",1,"two",null);...} 在使用put方法进行数据保存的时候会调用putVal方法,同时会将key进行哈希处理(生成hash码) 而putVal()方法为了方便数据保存会将数据封装为一个Node节点类对象,而在使用putVal...()方法的操作过程会调用reasize()方法进行扩容; 3)容量扩充 当保存的数据超过既定的存储容量则会进行扩容,原则如下: 常量地址:DEFAULT_INITIAL_CAPACITY;作为初始化的容量配置...Map.Entry接口封装的二元偶对象,所以就必须采用Map集合的迭代输出; 使得Map接口中的entrySet(),将Map集合变为Set集合; 取得Set接口实例后就可以利用iterator方法取得

39930

Java中常见的异常类型

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

2.1K40

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

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

42050

Java集合-Iterator

Java集合-Iterator Java Iterator接口表示一个对象,该对象能够遍历Java对象的集合,一次迭代一个对象。...Iterator 接口是Java中用于迭代对象集合的最古老的机制之一(尽管不是最早的-Enumerator 早于Iterator )。...Iterator核心方法 Iterator接口非常简单,下面是核心方法方法 说明 hasNext() 如果Iterator还有元素则返回true,否则返回false next() 返回Iterator...标准的java集合接口Collection 包含一个iterator()方法调用iterator()方法可以从Collection中获取一个迭代器。...迭代时移除元素 Java迭代器接口有一个remove()方法,可以从底层集合中移除next()刚刚返回的元素,调用remove()方法不会抛ConcurrentModificationException

29120

来了来了,Java14它真的来了

() || instanceof Collection && ((Collection) o).isEmpty(); } 现在您可以在使用 instanceof 检查时直接将值赋给变量,并其执行进一步调用...在 Java 中,编译器和运行时环境都不支持处理零引用。 这些恼人的异常可以通过各种变通方法来避免。 最简单的方法是将检查设置为零。 不幸的是,这个过程非常繁琐,当我们需要它的时候我们往往会忘记它。...使用自 JDK 8以来包含的包装器类 Optional,您可以通过 API 显式地告诉调用者,一个值可以为零,并且它必须对此进行响应。 因此,您不能再意外地遇到空引用,而必须显式地处理可能为空的值。...: Cannot invoke "Person.name()" because "" is null 不幸的是,当一个空参数时,目前没有方法引用的指示: Stream.of( man...但是,如本例所示,如果将每个流方法调用放在新行中,那么麻烦的代码行可以很快地缩小范围。

90500

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

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

54120

在王者荣耀角度下分析面向对象程序设计B中23种设计模式之组合模式

如果一个对象包含另一个对象引用,称这个对象为组合对象。如果当前组合对象作为一个整体的话,那么它所包含的对象就是该整体的一部分,如果一个对象不含有其它对象引用,称这个对象为个体对象。...组合模式结构中的三种角色: ①抽象组件(Component):抽象组件是一个接口(抽象类),该接口(抽象类)定义了个体对象和组合对象,需要实现的关于操作其子节点的方法,比如add()、remove()...抽象组件也可以定义个体对象和组合对象,用于操作其自身的方法,比如isLeaf()方法等。...③Leaf节点(Leaf Node):实现component接口类的实例,Leaf节点实现component接口,不可以含有其它composite节点或Leaf节点的引用,因此,叶节点在实现component...接口有关操作子节点的方法时,比如add()、remove()和getChild()方法,可让方法抛出一个异常,也可以实现为空操作 组合模式的UML类图: ?

61330

Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明

Collection 接口:单例数据,定义了存取一组对象方法的集合。List : 元素有序,可重复的集合。Set :元素无序,不可重复的集合。...Map 接口:双列数据,保存具有映射关系”key-value“ 的集合。Map 中的 key 和 value 都可以是任何引用类型的数据。...所在类的 hashCode() 方法,来得到该 key1对象的 hashCode(哈希) 值。...返回的值是Hashtable调用put的结果。简单的说:就是向Property 集合中添加键值元素。...Collections 中提供了一系列静态的方法(工具方法麻,一般都是静态方法)集合元素进行排序,查询和修改等操作,还提供了集合对象设置不可变,集合对象实现同步控制(解决线程安全问题)等方法

77220

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

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

1.3K30

Java基础——类&对象

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

46820

设计模式实战-迭代器模式,最常用的设计模式之一

接口,完成容器元素的遍历; 抽象聚集(Aggregate)角色:该角色提供创建迭代器角色的接口; 具体聚集(Concrete Aggregate)角色:该角色实现抽象聚集接口,创建出容纳迭代器的对象。...; 迭代器模式封装了遍历算法,使算法独立于聚集角色,调用者无须知道聚集对象的类型,即使聚集对象的类型发生变化,也不会影响遍历过程。...、Stack、HashSet 等集合类都实现了 iterator() 方法,返回一个迭代器 Iterator,用于集合中的元素进行遍历。...,获得统一的迭代器对象 java.util.Iterator,然后进行循环遍历。...7、总结 迭代器模式是最常用的设计模式之一,已经被广泛应用到 Java 的 API 中,比如在 Java 的集合中,使用 iterator() 方法就可以获得统一的迭代器对象 java.util.Iterator

56720
领券