zoukankan      html  css  js  c++  java
  • 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》

  • 相关阅读:
    Oracle 推出 ODAC for Entity Framework 和 LINQ to Entities Beta版
    Entity Framework Feature CTP 5系列文章
    MonoDroid相关资源
    MSDN杂志上的Windows Phone相关文章
    微软学Android Market推出 Web Windows Phone Marketplace
    使用 Visual Studio Agent 2010 进行负载压力测试的安装指南
    MonoMac 1.0正式发布
    Shawn Wildermuth的《Architecting WP7 》系列文章
    使用.NET Mobile API即51Degrees.mobi检测UserAgent
    MongoDB 客户端 MongoVue
  • 原文地址:https://www.cnblogs.com/guoke289/p/6724681.html
Copyright © 2011-2022 走看看