zoukankan      html  css  js  c++  java
  • 初始化

    构建器初始化###

    我们可以在构建器中执行初始化进程。但是不可以妨碍自动初始化的进行,它在构建器进入之前就会发生。下面的程序i首先会初始化为0,然后变成7。

    class Counter {
    int i;
    Counter() { i = 7; }
    // . . .
    

    静态数据的初始化###

    如果是基本类型,会自动获取自己的标准初始化值;如果是指向一个对象,除非新建一个对象,否则为null

    只有发生了第一次static访问,它们才会创建。在那以后,static对象不会重新初始化

    初始化的顺序是static,随后是非static对象。

    //: StaticInitialization.java
    // Specifying initial values in a
    // class definition.
    class Bowl {
        Bowl(int marker) {
            System.out.println("Bowl(" + marker + ")");
        }
        void f(int marker) {
            System.out.println("f(" + marker + ")");
        }
    }
    class Table {
        static Bowl b1 = new Bowl(1);
        Table() {
            System.out.println("Table()");
            b2.f(1);
        }
        void f2(int marker) {
            System.out.println("f2(" + marker + ")");
        }
        static Bowl b2 = new Bowl(2);
    }
    public class StaticInitialization {
        public static void main(String[] args) {
            System.out.println(
                    "Creating new Cupboard() in main");
            System.out.println(
                    "Creating new Cupboard() in main");
    //        t2.f2(1);
        }
    //    static Table t2 = new Table();
    
    } ///:~
    

    如果把t2注释掉,Table没有程序访问,所以Table不会初始化。

    下面总结一下对象的创建过程。以Dog类为例:

    1. 类型为Dog的对象首次创建时,或Dog类的static方法/static字段首次访问时,java解释器必须找到Dog.class。
    2. 找到后,会创建一个class对象,它的所有static初始化模块都会运行。因此static初始化仅发生一次——在Class对象首次载入的时候
    3. 创建一个一个new Dog()时,Dog对象的构建进程首先会在内存堆里为一个Dog分配足够多的存储空间
    4. 存储空间会清为0,将Dog中的所有基本类型设为它们的默认值。
    5. 进行字段定义时发生的所有初始化都会执行。
    6. 执行构建器。

    ...

    class Spoon {
    	static int i;
        static {
        	i = 47;
        }
    }
    

    上面的static块与其他static初始化一样,仅执行一次————首次生成这个类的第一个对象时,或者首次访问static成员时。

    数组初始化

    数组定义:int[] al;int al[];

    数组初始化的方式:

    1. 特殊初始化,必须在数组创建的地方。int[] a1 = { 1, 2, 3, 4, 5 };
    2. 在其他地方。 a = new Integer[10];

    我们可以将一个数组分配给另一个数组。能使用这个语句a2 = a1

    基本数据类型的数组元素会自动初始化为“空”值(对于数值,空值是零,对于char,是null,对于boolean,是false)。

  • 相关阅读:
    embeding 是什么
    linux xlearn安装
    argmin ,argmax函数
    随机森林算法OOB_SCORE最佳特征选择
    Scikit-Learn 机器学习笔记 -- 线性回归、逻辑回归、softma
    Spring回调方法DisposableBean接口
    java中InvocationHandler 用于实现代理。
    Spring之FactoryBean
    weblogic 的安装和配置
    JBoss7 安装配置
  • 原文地址:https://www.cnblogs.com/sean-zeng/p/11041553.html
Copyright © 2011-2022 走看看