A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

静态代码块:用于给类初始化,类加载时就会被加载执行,只加载一次。
                构造代码块:用于给对象初始化的。只要建立对象该部分就会被执行,且优先于构造函数。
                构造函数:  给对应对象初始化的,建立对象时,选择相应的构造函数初始化对象。               
          创建对象时,三者被加载执行顺序:静态代码块--->构造代码块--->构造函数
          子类在建立对象前,父类静态代码块 ->子类静态代码快,然后父类的构造代码块->父类构造函数先运行,然后才是子类构造代码块->子类构造函数
//利用代码进行测试        例题:06--06:StaticCodeDemo.java
class Person
{
        private String name;
        private int age=0;
        private static String country="cn";       
        Person(String name,int age)
        {
                this.name=name;
                this.age=age;       
        }
        static
        {
                System.out.println("静态代码块被执行");       
        }
        { System.out.println(name+"..."+age);        }
        public void setName(String name)
        {
                this.name=name;       
        }
        public void speak()
        {
                System.out.println(this.name+"..."+this.age);       
        }
        public static void showCountry()
        {
                System.out.println("country="+country);       
        }
}
class StaticDemo
{
        static
        {
                System.out.println("StaticDemo 静态代码块1");       
        }
        public static void main(String[] args)
        {
                Person p=new Person("zhangsan",100);
                p.setName("lisi");
                p.speak();
                Person.showCountry();       
        }
        static
        {
                System.out.println("StaticDemo 静态代码块2");       
        }       
}
输出结果:
          StaticDemo 静态代码块1
          StaticDemo 静态代码块2
          静态代码块被执行
          null...0                  //构造代码块
          lisi...100                //speak()
          country=cn                //showCountry()

1 个回复

正序浏览
不错,代码排版再好点就行了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马