Thinking in java-1 Initialization 初始化

来源:互联网 发布:ed2k下载工具 mac 编辑:程序博客网 时间:2024/06/05 19:51

1. 类的初始化

类中的初始化顺序是由类中变量定义位置所决定的;变量的初始化在任何方法调用之前发生(包括构造方法)。
public class MethodInit2{     int i = f();     int j = g(i);     int f(){ return 11;}     int g(int n){ return n*10;}}But you can't do this:public class MethodInit3{     int j = g(i);     //Illegal forward reference     int i = f();     int f(){ return 11;}     int g(int n){retunr n*10;}}


2. 静态数据初始化

静态数据在内存中只存储一份,不管多少个相关对象被创建。不能把static关键字作用于局部变量,只能作用于成员变量。
如果是基本类型静态变量(boolean,byte,short,char,int,long,float,double)没有显式初始化,则被初始化为该类型默认值;如果是饮用类型变量未被显式初始化,则被初始化为null。

3. 非静态数据初始化

按照顺序:先初始化静态变量和静态代码块;然后非静态变量和代码块;然后是构造函数。
package com.fqyuan.thinking;public class TestMemory {public static void main(String[] args) { // Line 1int i = 1; // Line 2Object obj = new Object(); // Line 3TestMemory mem = new TestMemory(); // Line 4mem.foo(obj); // Line 5} // Line 9private void foo(Object param) { // Line 6String str = param.toString(); // Line 7System.out.println(str);} // Line 8}


运行结果:
age is: 1Age's age is: 22Initialization Demo!


4. 数组初始化

数组是固定数量同一类型数据的集合。
如果是基本数据类型,则未显式初始化则被初始化为对应的默认类型。
如果是引用类型数据,则未被显式初始化的将被初始化为null。
原创粉丝点击