二十九、JavaSE----关于null的处理方式

举报
托马斯-酷涛 发表于 2022/05/26 01:51:59 2022/05/26
【摘要】                  对于Java程序员来说,空指针一直是恼人的问题,我们在开发中经常会受到NullPointerException的蹂踽和壁咚。   ...

        

        对于Java程序员来说,空指针一直是恼人的问题,我们在开发中经常会受到NullPointerException的蹂踽和壁咚。

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

  1. 大小写敏感
  2. null是任何引用类型的初始值
  3. null既不是对象也不是类型,它是一种特殊的值,你可以将它赋值给任何引用数据类型
  4. null不能赋值给基本数据类型
  5. 将null赋值给包装类,自动拆包会报NPE
  6. 带有null的引用类型变量,instanceof会报false
  7. 静态变量为null,调用静态方法不会抛出NPE
  8. 使用null值安全的方法
  9. 使用==或!=判断null

大小写敏感

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

         这个问题已经几乎不会出现,因为eclipseIdea编译器已经给出了编译器提示,所以基本不用去考虑这个问题。

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

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

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

类型

初始值

boolean

false

char

/u0000

byte

(byte)0

short

(short)0

int

0

long

0L

float

0.0f

double

0.0d

null只是一种特殊的值

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

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

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

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

使用了帯有null值的引用类型变量,instance  of 操作会返回false 

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

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

使用Null-Safe方法

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

         number没有赋值,所以默认为null,使用String.value(number)静态方法没有抛出空指针异常, 但是使用toString却抛出了空指针异常。所以尽量使用对象的静态方法。


null判断

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

 关于思维导图

常用的Java工具包的思维导图汇总如下:

Java.IO


 

Java.math 

Java.net

文章来源: tuomasi.blog.csdn.net,作者:托马斯-酷涛,版权归原作者所有,如需转载,请联系作者。

原文链接:tuomasi.blog.csdn.net/article/details/120088468

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。