static 加载

  1. import java.util.Arrays;   
  2. public class AA {  
  3.  private static int[] a = new int[4];   
  4.  private static AA aa = new AA();  
  5.  boolean[] flag =new boolean[5];  
  6.  private static char[] ad = new char[4];  
  7.  private AA(){//构造方法   
  8.      init();  
  9.  }   
  10.  public static AA getAA(){//得到单态实例   
  11.      return aa;  
  12.  }  
  13.  public void init(){  
  14.     Arrays.fill(a, 1);//此处不会出错   
  15.      Arrays.fill(flag, true);//此处也不会出错,用作对比   
  16.      Arrays.fill(ad,'d');//此处将会出错   
  17.      System.out.println(a[0]);   
  18.   } /** * @param args */   
  19.  public static void main(String[] args) {  
  20.  }   
  21. }  

 

 

a,aa,ad都是静态的,在类加载的时候,会按顺序给他们创建空间, 
a创建了4个int,到了aa,aa是个自定义的对象,调用其无参构造方法,然后,在调用init()前 
JVM会先初始化类中非静态属性flag,为flag创建了5个boolean,然后调用其init(), 
而在init()中你调用了未初始化的ad,ad此时为空,异常就出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值