学习Java(86)_空指针异常的问题

有时候,在try中实例化一个对象,但在try、catch之外使用该对象时,会抛出一个空指针异常的错误,即:NullPointerException。解决这个问题的方法也非常简单,在try中实例化对象之前,在try之外先定义一个该类型的引用,令该引用为null即可。如下例:
class A
{
	public void fun()
	{
		System.out.println( "aaaa" );
	}
}
class TestNullException
{
	public static void main( String[] args )
	{
		A aa; //定义一个引用
		try //只要是放在try中的代码,JVM都认为不一定执行成功
		{
			aa = new A();
		}
		catch( Exception e )
		{
			e.printStackTrace();
		}
		aa.fun();		
	}
}
/*
	在JDK1.8.0_91中运行的结果是:
	============================
	E:\textjava>javac TestNullPointerException_1.java
	TestNullPointerException_1.java:23: 错误: 可能尚未初 始化变量aa
					aa.fun();
					^
	1 个错误
	============================
	总结:
		因为实例化的时候是在try中进行,JVM认为很有可能会抛出异常,
		所以,在引用aa的时候,JVM认为很可能是一个空指针。
		解决方法:
			在定义引用的时候,直接赋空值,即:A aa = null;
			这样就不会在编译的时候报错,但是,aa若真的是空值,
			会在执行的时候抛出空指针异常异常。
		测试方法:
			A aa2 = null;
			aa2 = new A();
			以上两行代码在编译的时候不会出错,但在执行的时候会报出:
			NullPointerException错误。
*/


小艾的博客 http://www.aixinyan.me/