1-类的静态初始化块(注:只会第一次使用到这个类的时候被执行一次)
2-类的静态数据成员
3-类的非静态初始化块
4-类的非静态数据成员
5-类的构造函数
example in 《Thinking in java》
java 代码
- 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);
- }
- class Cupboard{
- Bowl b3=new Bowl(3);
- static Bowl b4=new Bowl(4);
- Cupboard(){
- System.out.println("Cupboard()");
- b4.f(2);
- }
- void f3(int marker){
- System.out.println("f3 :"+marker);
- }
- static Bowl b5=new Bowl(5);
- }
- public class StaticInitialization {
- public static void main(String[] args) {
- System.out.println("Creating new Cupboard() in main");
- new Cupboard();
- System.out.println("Creating new Cupboard() in main");
- new Cupboard();
- t2.f2(1);
- t3.f3(1);
- }
- static Table t2=new Table();
- static Cupboard t3=new Cupboard();
- }
执行结果:
- Bowl :1
- Bowl :2
- Table()
- f :1
- Bowl :4
- Bowl :5
- Bowl :3
- Cupboard()
- f :2
- Creating new Cupboard() in main
- Bowl :3
- Cupboard()
- f :2
- Creating new Cupboard() in main
- Bowl :3
- Cupboard()
- f :2
- f2 :1
- f3 :1