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)

    非静态实例初始化

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

  • 相关阅读:
    道路和航线(最短路SPFA优化算法)
    走廊泼水节 (最大生成树)
    大数板子
    强连通分量
    path(CCPC网络赛)
    Plug It In!(网络流板子)
    链式前向星上DFS(Pants On Fire)
    手环定理
    (x+y)%p==b ;(x*y)%p==c; 知道b,c,求x,y;
    牛客多校第六场-H-Pair
  • 原文地址:https://www.cnblogs.com/Hdaydayup/p/7146622.html
Copyright © 2011-2022 走看看