zoukankan      html  css  js  c++  java
  • java中有关初始化的问题

    在类的内部,变量定义的先后顺序决定了初始化顺序,即使变量定义分散在方法定义之外,它们依旧会在任何方法(包括构造器)被调用之前得到初始化

    其中初始化的顺序先是静态对象,其后是非静态对象

    例如:

    class Cat{
        private Dog dog1=new Dog(1);
        static private Dog dog2=new Dog(2);
        public Cat(int n){
            System.out.println("第"+n+"只猫");
        }
    }
    class Dog{
        public Dog(int n){
            System.out.println("Dog("+n+")");
        }
    }
    public class TestStatic {
        public static void main(String[] args) {
            System.out.println("test...");
            Cat cat=new Cat(1);
        }
    }  

    运行结果:

    test...
    Dog(2)
    Dog(1)
    第1只猫
    

      

    cat类和dog类构造器中打印信息为了看初始化信息

    在main方法中,创建了一个Cat类,除构造方法外,有两个对象,一个是静态dog,另外一个是dog,因为静态对象有先初始化,所以先打印出Dog(2),其后才是Dog(1)

    最后才调用cat的构造方法,打印出cat(1)

    非静态实例初始化

    {}里初始化的内容在构造器之前执行,且每次生成该类{}将会重新被初始化

  • 相关阅读:
    cookie 和 session 和 session id
    getMasterRequest VS getCurrentRequest?
    drupal 7 watchdog 记录debug信息
    刷环境
    再进一步
    7zip 不见 .git
    为什么我记不住密码
    www / publish
    behat debug / class property
    drupal 网站Log
  • 原文地址:https://www.cnblogs.com/Hdaydayup/p/7146622.html
Copyright © 2011-2022 走看看