Java null你真的会用吗,为什么Google程序员都在推荐慎用?
null是什么?
null是Java中一个很重要的概念,null一般是用来表示一些缺失的东西,例如缺失的用户、资源或其他东西。null是Java中的关键字,像public、static、final。它是大小写敏感的,你不能将null写成Null或NULL。在Java中,任何引用类型的默认值都会被设置为null,虽然null可以赋值给任何的引用类型,但是使用instanceof进行操作得到的永远是false。null是不能赋值给基本类型变量,如果对null进行拆箱操作也会抛出NPE异常
1) 首先,null是java中的关键字,像public、static、final。它是大小写敏感的,你不能将null写成Null或NULL,编译器将不能识别他们然后报错。
2) 就像每种原始类型都有默认值一样,int默认值为0,boolean的默认值为false,null是任何引用类型的默认值,
对所有变量都是适用的,如成员变量、局部变量、实例变量、静态变量(但当你使用一个没有初始化的局部变量,编译器会警告你)。
3) 要澄清一些误解,null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何引用类型,
不能将null赋值给基本类型变量,如int、double、float、boolean。
4)容器类型与null
List:允许重复元素,可以加入任意多个null。
Set:不允许重复元素,最多可以加入一个null。
Map:Map的key最多可以加入一个null,value字段没有限制。
数组:基本类型数组,定义后,如果不给定初始值,则java运行时会自动给定值。引用类型数组,不给定初始值,则所有的元素值为null。