java静态构造器

静态初始化器public class Textstatic {
      public static void main (String[] args) {
           Phonecard200 My1=new Phonecard200();//建立一个新对象My1(标号a)
           Phonecard200 My2=new Phonecard200();//建立一个新对象My2(b) 
           System.out.println("the first card number is :"+My1.Cardnumber); 
           System.out.println("the second card number is :"+My2.Cardnumber);
       }
  }

class Phonecard200 { 
           static long nextCardnumber;//静态域 
           long Cardnumber; 
           static  {
                        nextCardnumber=20001008;
                      }//静态初始化器 
           Phonecard200()//构造函数  {
                       Cardnumber=nextCardnumber++;  
           }
    }

 当类Phonecard200加载到内存时,系统自动调用静态初始化器,把类的静态域nextCardnumber初始化成20001008,当我们创建类Phonecard200的对象My1时(标号a),系统调用构造函数,将My1的卡号Cardnumber设置成nextCardnumber的当前值,即:20001008,然后把nextCardnumber的值自动加1。当(标号b)我们创建类Phonecard200的另一个对象My2时,系统会再度调用构造函数,将My2的卡号Cardnumber设置成nextCardnumber的当前值,即:20001009,然后把nextCardnumber的值再自动加1。如果我们还有创建对象的话,就这样一直下去。  但是,如果我们把静态初始化器去掉,而把那句nextCardnumber=20001008;放到构造函数的第一句去的话,就不一样了。这样输出的老是20001008,而不会是原先的20001008和20001009。这说明静态初始化器和构造函数是不一样的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值