相信空指针是平时最多见的错误了,下面认识 null ,有助于解决 NPE 问题。java
关于这个问题,实际上是对面试时候手写算法题时候须要注意的问题。面试
null 它是 Java的关键字,它是大小写敏感的,不能写成 NULL,Null等等。算法
固然在现实工做中,现有市面上的流行编译器通常会有报错提示。工具
这里须要注意是引用类型,基本数据类型的,int 默认初始值是 0;boolean 默认初始值是 false 等。指针
也就是说 Object 类型的默认初始值都是 null 。code
null 既不是对象也不是数据类型,他只是一种特殊的值。对象
能够将它复制给任何引用类型的变量,这时并不会抛出空指针异常。blog
可是注意,并不能赋值给基本数据类型的变量,由于持有 null 的包装类在进行自动拆箱的时候,不能完成转换,会抛出空指针异常。null 同时也不能和基本数据类型做比较。编译器
public static void main(String[] args) { Integer isNull = null; // instanceof = isInstance 方法 if(isNull instanceof Integer){ System.out.println("isNull is instanceof Integer"); }else{ System.out.println("isNull is not instanceof Integer"); } }
这是 instanceof 操做符一个很重要的特性,使得对类型强制转换检查颇有用。string
静态变量为 null 调用静态方法不会抛出 NullPointerException。由于静态方法使用了静态绑定。
所谓使用 Null-Safe 方法,其实就是多使用工具类提供的的静态方法。以此来避免 NullPointerException。
private static String numbers; public static void main(String[] args) { String string = String.valueOf(numbers); //编译经过 String s = numbers.toString(); //java.lang.NullPointerException }
你能够使用 == 或者!=操做来比较 null 值,可是不能使用其余算法或者逻辑操做,例如小于或者大于。跟SQL不同,在Java中null == null 将返回true。