读书笔记之初始化

默认初始化

在Java中,所有的变量在使用前都能得到恰当的初始化。包括类的数据成员,都会有一个初始值。

public class InitValue {
	boolean t;
	char c;
	byte b;
	int i;
	short s;
	long l;
	double d;
	float f;
	InitValue r;
	void printValue(){
		System.out.println("Data type         InitValue");
		System.out.println("boolean           "  + t);
		System.out.println("char              "  + c);
		System.out.println("byte              "  + b);
		System.out.println("int               "  + i);
		System.out.println("short             "  + s);
		System.out.println("long              "  + l);
		System.out.println("double            "  + d);		
		System.out.println("float             "  + f);
		System.out.println("InitValue         "  + r);
	}
	public static void main(String[] args){
		InitValue iv = new InitValue();
		iv.printValue();		
	}
}
运行结果如下:


因为char是0,所以是一个空白。上面也说明了一个问题,在类里定义一个对象引用时,如果不将其初始化,此引用就会获得一个特殊值null。

初始化顺序

在类内部的初始化中,变量定义的先后顺序决定初始化的顺序。不过当静态变量、静态初始化块、变量、初始化块、构造器在一起的时候,它们的初始化顺序是:(静态变量、静态初始化块)>(变量、初始化块)> 构造器。

对于静态数据,无论创建多少个对象,静态数据都只占用一份存储区域。Static关键字不能应用于局部变量。

class Cup{
	Cup(int market){
		System.out.println("Cup(" + market + ")");
	}
	void f(int market){
		System.out.println("f(" + market + ")");
	}
}

class Cups{
	static{
		Cup cup2 = new Cup(2);
	}
	static Cup cup1 = new Cup(1);
	Cups(){
		System.out.println("Cups()");
	}
}

public class ExStatic {
	public static void main(String[] args){
		System.out.println("Inside main()");
		new Cups();
		Cups.cup1.f(99);
	}
	static Cups cups1 = new Cups();
	static Cups cups2 = new Cups();
}
运行结果如下:

Cup(2)
Cup(1)
Cups()
Cups()
Inside main()
Cups()
f(99)

如果是父类和子类一起,则执行流程如下所示:


参考博客:

http://www.cnblogs.com/miniwiki/archive/2011/03/25/1995615.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值