• JAVA静态数据的初始化;


    ①:Java首次会自动对变量进行初始化,其顺序优于构造器;

    ②:如果一个域是静态的的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值,如果它是一个对象引用,那么他的默认初始化值为null;

    ③:Java在执行一个类时,会冲main方法入口开始,在执行main()之前,需要加载包含main()方法的类,此时编译器会先对该类的变量进行初始化,静态的优与非静态的,如果只基本类型直接初始化,如果是应用类型,则对静态的引用进行初始化,

    比如:

    class A{

    public static void main(){

          print("dddddddddd");

    }

    static  Table=new Table();

    }

    class Table {

    static Bow bow1=new Bow();

    Table(){

     printf("table初始化");

    }

    static Bow bow2=new Bow();

    }

    类似上面的代码,在执行main()函数之前会先执行main函数后面的一条静态语句,在执行静态语句时,会调用相应的Table的类,在执行Table的构造器之前会对Table类中的静态语句进行初始化,执行完Table构造器之后的静态语句之后再执行Table的构造器(

       静态的对象只会被初始化一次,如果第二次牵扯到静态的域时,程序不会对它进行二次初始化)

    总结:①构造器可以看成是静态的

           ②:初始化的顺序是先静态对象,然后非静态,

         ③:对象的创建过程:1):当创建一个对象时,Java解释器会先定位到该对象的.class文件;2)加载该.class文件,该过程会对有关静态初始化的操作会被完成(也就是说只在被加载时进行一次)。

                                      3):在内存中开辟一个空间用于放置这个对象,并对基本的变量进行初始化(基本类型的初始化为初始值,引用对象初始化为null),

                                      4) : 执行完所有的变量初始化后,就开始执行构造器方法:

      详细内容可以参见 《Java 编程思想——p95--p96》

  • 相关阅读:
    关于float和double类型能表示的数据范围和精度分析
    P2737 [USACO4.1]麦香牛块Beef McNuggets 数学题 + 放缩思想
    csu 1554: SG Value 思维题
    csu 1551: Longest Increasing Subsequence Again BIT + 思维
    Rasheda And The Zeriba Gym
    cpc,a wonderful concert
    hdu_3308 区间合并
    poj_3667线段树区间合并
    poj_2777线段树+位运算
    poj_3468,线段树成段更新
  • 原文地址:https://www.cnblogs.com/guoke289/p/6724681.html
Copyright © 2020-2023  润新知