Thinking in java-1 Initialization 初始化

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 1
		int i = 1; // Line 2
		Object obj = new Object(); // Line 3
		TestMemory mem = new TestMemory(); // Line 4
		mem.foo(obj); // Line 5
	} // Line 9

	private void foo(Object param) { // Line 6
		String str = param.toString(); // Line 7
		System.out.println(str);
	} // Line 8
}


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


4. 数组初始化

数组是固定数量同一类型数据的集合。
如果是基本数据类型,则未显式初始化则被初始化为对应的默认类型。
如果是引用类型数据,则未被显式初始化的将被初始化为null。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值