赞
踩
空指针异常(NullPointerException)是 Java 编程语言中常见的运行时异常之一,尤其是在使用Java这类强类型语言时。这种异常通常发生在尝试使用未初始化(即为null)的对象引用时。
在Java中,当声明一个对象但没有为其分配内存(即没有用new关键字创建一个实例),则这个对象引用就会指向null
。如这种状态下尝试访问对象的方法或属性,就会抛出空指针异常(NullPointerException)。
public class Main { public static void main(String[] args) { String text = null; int length = text.length(); // 这里会抛出NullPointerException System.exit(0); //success } }
1)检查空指针
在使用对象之前,先检查它是否为null
。如果为空则抛出异常或采取其他措施。
例如,
public class Main { public static void main(String[] args) { String str = null; if (str == null) { throw new NullPointerException("str is null"); } // 使用 str String text = null; int length = text.length(); System.exit(0); //success } }
2)使用 Optional 类
Java 8 引入的 Optional
类可以用于表示可能为 null
的值。这有助于避免直接使用 null
。
例如,
import java.util.Optional; public class Main { public static void main(String[] args) { // 获取一个可能为 null 的字符串 Optional<String> optionalString = Optional.ofNullable(getStringValue()); // 检查 Optional 对象是否有值 if (optionalString.isPresent()) { // 如果有值,则打印它 System.out.println(optionalString.get()); } else { // 如果没有值,打印默认消息 System.out.println("No value present"); } System.exit(0); //success } // 模拟一个可能返回 null 的方法 public static String getStringValue() { // 模拟条件,可以返回 null 或非 null 值 boolean returnsNull = Math.random() < 0.5; if (returnsNull) { return null; } else { return "Hello, World!"; } } }
3)提供默认值
当预期的引用可能为 null
时,提供一个默认值。
import java.util.Optional; public class Main { public static void main(String[] args) { // 获取一个可能为 null 的字符串 String text = Optional.ofNullable(getStringValue()).orElse("default"); System.out.println(text); int length = text.length(); System.out.println(length); System.exit(0); //success } // 模拟一个可能返回 null 的方法 public static String getStringValue() { // 模拟条件,可以返回 null 或非 null 值 boolean returnsNull = Math.random() < 0.5; if (returnsNull) { return null; } else { return "Hello, World!"; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。