zoukankan      html  css  js  c++  java
  • statis代码块以及非static代码块之执行

     1 package com.hangao.teststatic;
     2 
     3 /**
     4  * @author hangao hangao1204@hotmail.com
     5  * 
     6  * 1.声明父类引用,指向父类对象,代码执行顺序是
     7  *        依次执行父类的静态代码块,再依次执行父类非静态代码块,最后执行父类构造方法
     8  *
     9  * 2.声明父类引用,指向子类对象,代码执行顺序是
    10  *        依次执行父类的静态代码块,依次执行子类的静态代码块
    11  *        再依次执行父类非静态代码块,执行父类构造方法
    12  *        再依次执行子类非静态代码块,最后执行子类构造方法
    13  * 
    14  * 3.声明子类引用,指向子类对象,代码执行顺序是<!-- 同上 -->
    15  *        依次执行父类的静态代码块,依次执行子类的静态代码块
    16  *        再依次执行父类非静态代码块,执行父类构造方法
    17  *        再依次执行子类非静态代码块,最后执行子类构造方法
    18  *
    19  * 4.总结:静态代码块在类被jvm加载的时候执行,且只执行一次
    20  *         非静态代码块在类构造方法被调用的时候执行,可能会执行多次
    21  */
    22 public class TestStatic {
    23     public static void main(String[] args) {
    24         testStatic1();
    25         testStatic2();
    26         testStatic3();
    27         testStatic4();
    28     }
    29 
    30     /**
    31      * 运行结果:
    32      * Animal-static1
    33      * Animal-static2
    34      * Animal-no-static1
    35      * Animal-no-static2
    36      * Animal.Animal()
    37      * Animal.eat()
    38      */
    39     private static void testStatic1() {
    40         Animal animal = new Animal();
    41         animal.eat();
    42     }
    43     
    44     /**
    45      * 运行结果:
    46      * Animal-static1
    47      * Animal-static2
    48      * Dog-static1
    49      * Dog-static2
    50      * Animal-no-static1
    51      * Animal-no-static2
    52      * Animal.Animal()
    53      * Dog-no-static1
    54      * Dog-no-static2
    55      * Dog.Animal()
    56      * Dog.eat()
    57      */
    58     private static void testStatic2() {
    59         Animal animalDog = new Dog();
    60         animalDog.eat();
    61     }
    62     
    63     /**
    64      * 运行结果:
    65      * Animal-static1
    66      * Animal-static2
    67      * Dog-static1
    68      * Dog-static2
    69      * Animal-no-static1
    70      * Animal-no-static2
    71      * Animal.Animal()
    72      * Dog-no-static1
    73      * Dog-no-static2
    74      * Dog.Animal()
    75      * Dog.eat()
    76      */
    77     private static void testStatic3() {
    78         Dog dog = new Dog();
    79         dog.eat();
    80     }
    81     
    82     /**
    83      * 运行结果:
    84      * Animal-static1
    85      * Animal-static2
    86      * Animal-no-static1
    87      * Animal-no-static2
    88      * Animal.Animal()
    89      * Animal-no-static1
    90      * Animal-no-static2
    91      * Animal.Animal()
    92      * Animal.eat()
    93      */
    94     private static void testStatic4() {
    95         Animal animal = new Animal();
    96         animal = new Animal();
    97         animal.eat();
    98     }
    99 }
     1 package com.hangao.teststatic;
     2 
     3 public class Animal {
     4     static{
     5         System.out.println("Animal-static1");
     6     }
     7     {
     8         System.out.println("Animal-no-static1");
     9     }
    10     public Animal() {
    11         System.out.println("Animal.Animal()");
    12     }
    13     {
    14         System.out.println("Animal-no-static2");
    15     }
    16     static{
    17         System.out.println("Animal-static2");
    18     }
    19     public void eat(){
    20         System.out.println("Animal.eat()");
    21     }
    22 }
    Animal
     1 package com.hangao.teststatic;
     2 
     3 public class Dog extends Animal {
     4     static{
     5         System.out.println("Dog-static1");
     6     }
     7     {
     8         System.out.println("Dog-no-static1");
     9     }
    10     public Dog() {
    11         System.out.println("Dog.Animal()");
    12     }
    13     {
    14         System.out.println("Dog-no-static2");
    15     }
    16     static{
    17         System.out.println("Dog-static2");
    18     }
    19     @Override
    20     public void eat() {
    21         System.out.println("Dog.eat()");
    22     }
    23 }
    Dog
  • 相关阅读:
    mvc 4 ActionFilterAttribute 特性,进行权限验证
    asp.net 将word文档进行编辑并导出一个新的word
    怎样才能最快速的找到破解软件?
    C#动态执行字符串(动态创建代码)
    使用Memcached提高.NET应用程序的性能
    ASP.NET 创建网站地图
    TFS2010安装办法及序列号
    在将 varchar 值 '1,2,3,4,5,6,7,8' 转换成数据类型 int 时失败。
    Js获取当前日期时间及其它操作
    截取Excel字符串的部分字符
  • 原文地址:https://www.cnblogs.com/hangao/p/6043117.html
Copyright © 2011-2022 走看看