package com.rc.portal.dao;
public class Test {
Test1 t=new Test1();
String t1;
String t2;
// 内部类
public class Test1{
String t2=t1.toString();
}
public static void main(String[] args) {
new Test();
}
}
Exception in thread "main" java.lang.NullPointerException
at com.rc.portal.dao.Test$Test1.<init>(Test.java:12)
at com.rc.portal.dao.Test.<init>(Test.java:6)
at com.rc.portal.dao.Test.main(Test.java:15)
原因:
在new Test()的时候首先去为t 赋值也就是去为Test1的t2赋值而此时t1为null
创建一个对象步骤
先实例化后初始化 在未初始化的时候引用类型默认为null 实例化开辟空间并从上到下执行属性赋值语句如果属性有默认值则值为默认值如果没有 引用类型会默认为null 值类型 int为0 boolean为false
该异常是因为在实例化Test的时候为t赋值的时候去使用了并为赋值的t1 所以引发空指针
注意:
在创建一个对象的时候初始化(用构造方法创建对象)
在使用一个对象的时候首先判断是否为null