「Java」一张图教会你关于null的几种处理方式(内附代码)

createh51周前 (03-06)技术教程2

对于Java程序员来说,空指针一直是恼人的问题,我们在开发中经常会受到NullPointerException的蹂躏和壁咚。Java的发明者也承认这是一个巨大的设计错误。

那么关于null,你应该知道下面这几件事情来有效地了解null,从而避免很多由null引起的错误。

大小写敏感

首先,null是Java中的关键字,像是public.、static、final。它是大小写敏感的,你不能将null写成Null或NULL,编辑器将不能识别它们然后报错。

public class AccessModifierNull{
         Object object = Null ;
         Object object1 = null ;
}

这个问题已经几乎不会出现,因为eclipse和Idea编译器已经给出了编译器提示,所以你不用考虑这个问题。

null是任何引用类型的初始值

null是所有引用类型的默认值,Java中的任何引用变量都将null作为默认值,也就是说所有Object类下的引用类型默认值都是null。这对所有的引用变量都适用。就像是基本类型的默认值- -样,例如int的默认值是0,,boolean的默认值是false。

下面是基本数据类型的初始值

null只是一种特殊的值

null既不是对象也不是一种类型, 它仅是-种特殊的值,你可以将它赋:予任何类型,你可以将null转换为任何类型。

public static void main(String[] args) {
        String str = null;
        Integer itr = null;
        Double dou = null;
  
        Integer integer = (Integer) null;
        String string = (String)null;
  
        System.out.printIn("integer =”+ integer);
        System.out.println("string =”+ string);
}

你可以看到在编译期和运行期内,将null转换成任何的引用类型都是可行的,并且不会抛出空指针异常。

null只能赋值给引用变量,不能赋值给基本类型变量。

持有null的包装类在进行自动拆箱的时候,不能完成转换,会抛出空指针异常,并且null也不能和基本数据类型进行对比。

public static void main(String[] args) {
        int i =0;
        Integer itr = null;
        System.out.println(itr == i);
}

使用了带有null值的引用类型变量,instanceof操作会返回false。

public static void main(String[] args) {
        Integer isNull = null;
        // instanceof = isInstance 方法
        if(isNull instanceof Integer){
                  System.out.printIn("isNull is instanceof Integer");
        }else{
                  System.out.println("isNull is not instanceof Integer");
}

这是instanceof操作符一个很重要的特性,使得对类型强制转换检查很有用。

静态变量为null调用静态方法不会抛出NullPointerException。因为静态方法使用了静态绑定。

使用Null-Safe方法

你应该使用nll-safe安全的方法,java类库中有很多工具类都提供了静态方法,例如基本数据类型的包装类,Integer,Double等。例如

public class NullSafeMethod {

        private static String number;
  
        public static void main(String[] args) {
                String s = String . valueOf( number);
                String string = number.toString();
                System.out.printIn("s ="+ s);
                System.out.println("string ="+ string);
         }
}

number没有赋值,所以默认为null,使用String.value(number)静态方法没有抛出空指针异常,

但是使用toString()却抛出了空指针异常。所以尽量使用对象的静态方法。

null判断

你可以使用==或者!=操作来比较null值,但是不能使用其他算法或者逻辑操作,例如小于或者大于。跟SQL不一样,在Java中null == null将返回true,如下所示:

public class CompareNull {
  
        private static String str1;
        private static String str2; 
  
        public static void main(String[] args) {
                 System.out.println("str1 == str2 ?"+ str1 == str2);
                 System.out.println(null == null);
        }
}

如果需要文档版请在评论区扣666,后台私我哦~

相关文章

Java 判断对象是否所有属性为空,大家觉得这样写可以吗?

序言:在开发Excel数据导入的时候,后台拿到Excel中的数据并接收到List泛型集合中,发现有很多对象的属性全部为null,想通过代码将这些无效的数据给过滤掉,下面是过滤的具体操作。ObjectU...

java8之Optional 判空,简化判空操作

导语在没有用Optional判空之前,你是否也像下面的代码一样判空呢?如果是,请往下看,Optional 相对传统判空的优势。传统阶层判空为什么要用Optional,它到底是什么东西你也看到了上面的那...

Java中的空指针怎么处理?

#暑期创作大赛#Java程序员工作中遇到最多的错误就是空指针异常,无论你多么细心,一不留神就从代码的某个地方冒出NullPointerException,令人头疼。1. 对象设置默认值Object o...

java catch 空指针异常_关于Java:捕获空指针异常

我想问的是有关Java的多数知识,但我想它适用于许多语言。考虑,if(myVariable==null){doSomethingAboutIt();}else carryOn(myVariable);...

java 中如何避免空指针

在Java中,空指针异常(NullPointerException)是常见的运行时异常,通常是因为在对一个空对象(null)进行方法调用、字段访问等操作时引起的。为了避免空指针异常,可以采取以下几种方...

告别空指针-Kotlin这一点把Java比下去了

写Java的各位想必没少被空指针异常(NullpointException)困扰,但在Kotlin中,我们终于可以跟它Say Goodbye了。严格来说,Kotlin中不是消灭了空指针异常,而是通过更...