一、空指针产生原因
Java是没有指针的,所以我们常说"Java 指针"就是指"Java 的引用"。空指针就是空引用,Java空指针异常就是引用本身为空,但却调用了方法,这个时候就会出现空指针异常。
成员变量和方法是属于对象的(除去静态的),在对象中才存在相对应的成员变量和方法,然后通过对象去调用这些成员变量和方法。
null可以赋值给引用变量,但不能将null赋给基本类型变量。例如int、double、float、boolean。编译器将会报错。
当直接将null赋值给基本类型,会出现编译错误。但是如果将null赋值给包装类object,然后将object赋给各自的基本类型,编译器不会报,但是你将会在运行时期遇到空指针异常。这是Java中的自动拆箱导致的
而对于空指针来说,它是不指向任何对象的,也就是没有所谓的成员变量和方法,这个时候去调用某些属性和方法时,就一定会出现空指针异常
当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在
当访问或修改一个对象不存在的字段时会产生异常obj.method() // method方法不存在
字符串变量未初始化;
接口类型的对象没有用具体的类初始化
二、空指针的情景
2.1字符串常量未初始化,比较时导致空指针异常
String str=null;
if("yrh".equals(str)){
System.out.println("yrh2");
}
if(str.equals("yrh")){
System.out.prin