Thinking in java ----静态数据的初始化

Date:  2012/9/22   Sort:  Java 1137 Views /  0 Comments / 

最近在看java编程思想,说实话,这本书不是很想看,不是说书不好,是因为要看这本书的话,需要静下心来慢慢去读他,因为里面的内容看似简单,其实里面讲了很多的东西,很多人说这本书不适合初学者来看,的确是,如果是初学者来看这本书的话,看起来会很吃力,不过看他之后绝对会有收获~

不过还是推荐看这本书,提高一下自己的能力。

废话少说,说说静态数据的初始化,首先声明,内容是参考java编程思想里面的,不能说是原创,但是也有自己的想法在里面~

要点:

初始化顺序:显示static对象,之后才会进行非static对象的初始化。

static初始化只有是在必要的时候才会进行。比如下面这个例子。

package test01;

class Bowl{
	Bowl (int maker){
		System.out.println("Bowl(" + maker + ")");
	}
	void f( int maker ){
		System.out.println("f(" + maker  +")");
	}
}

class Table {
	static Bowl b1 = new Bowl(1);
	Table (){
		System.out.println("Table()");
		b2.f(2);
	}
	void f2(int maker){
		System.out.println("f2(" + maker  +")");
	}
	static Bowl b2 = new Bowl(2);
}

class Cupboard{
	Bowl b3 = new Bowl(3);
	public Cupboard() {
		System.out.println("Cupboard()");
		b4.f(2);
	}
	void f3(int maker){
		System.out.println("f3(" + maker  +")");
	}
	static Bowl b4 = new Bowl(4);
}

public class StaticInitialization {

	static Table t1 = new Table();
	static Cupboard cp = new Cupboard();
	public static void main(String[] args) {
		System.out.println("Create new Cupboard() in main ");
		new Cupboard();
		System.out.println("Create new Cupboard() in main ");
		new Cupboard();
		
		t1.f2(2);
		cp.f3(3);
	}

}
运行结果如下:

Bowl(1)
Bowl(2)
Table()
f(2)
Bowl(4)
Bowl(3)
Cupboard()
f(2)
Create new Cupboard() in main 
Bowl(3)
Cupboard()
f(2)
Create new Cupboard() in main 
Bowl(3)
Cupboard()
f(2)
f2(2)
f3(3)
可以看到,初始化顺序,在Cupboard类中初始化两个对象,一个是非static的,一个是static的,结果中,static对象是在非static对象之前初始化的。

 

更多

版权所有:《攀爬的蜗牛--专注于技术开发》 => 《Thinking in java ----静态数据的初始化
本文地址:http://archive.dutycode.com/?post=56
除非注明,文章均为 《攀爬的蜗牛--专注于技术开发》 原创,欢迎转载!转载请注明本文地址,谢谢。

上一篇:java接口能否实例化_如何扩展接口 下一篇:eclipse卸载插件的方法

Powered by Emlog & DDCF Theme By Jons