概述
静态初始化器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。这说明静态初始化器和构造函数是不一样的。
最后
以上就是满意大树为你收集整理的java静态构造器的全部内容,希望文章能够帮你解决java静态构造器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复