Think In Java(四)初始化

  1. 指定初始化
    如果想为某个变量赋初始值,有一种很直接的办法,就是在定义类成员变量的地方为其赋值(在C++里不能这样做,尽管C++的新手们总想这样做)。以下代码片段直接给成员变量赋初值。
public class InitialValues {
	boolean bool = false;
	char ch = 'x';
	int i = 939;//....
}

也可以用同样的方法初始化非基本类型的对象。如果Depth是一个类

class Depth{}

public class Measurement {
	Depth d = new Depth();
	//....
}

甚至可以通过调用某个方法来提供初值:

public class MethodInit {
	int i = f();
	int f() {return 11;}
}

这个方法也可以带有参数,但这些参数必须是已经被初始化了的。

public class MethodInit2 {
	int i = f();
	int j = g(i);
	int f() { return 11; }
	int g int(int n) { return n * 10; }
  1. 构造器初始化(略)

  2. 初始化顺序
    例子:

    public class Initialization {
        Cup cup1 = new Cup(1);
        {
            System.out.println("init statament");
            Cup cup2 = new Cup(2);
        }
        Cup cup3 = new Cup(3);
    
        static Cup cup5 = new Cup(5);
        static {
            System.out.println("static init statament");
            Cup cup4 = new Cup(4);
        }
        static Cup cup6 = new Cup(6);
        public static void main(String[] args) {
            System.out.println("main()");
            Initialization initialization = new Initialization();
            staticInit();
        }
        public Initialization() {
            System.out.println("Initialization()");
            Cup cup7 = new Cup(7);
        }
    
        public static void staticInit() {
            System.out.println("staticInit()");
            Cup cup8 = new Cup(8);
        }
    }
    class Cup {
        public Cup(int i) {
            System.out.println("cup:" + i);
        }
    }
    
    

    输出:

cup:5
static init statament
cup:4
cup:6
main()
cup:1
init statament
cup:2
cup:3
Initialization()
cup:7
staticInit()
cup:8

总结:1)语句块对初始化顺序没有影响(即有没有大括号不影响顺序)
2)静态初始化语句—>>main—>>非静态初始化语句—>>构造器。
3)静态初始化语句只初始化一次
4)被static修饰的初始化块内都属于静态初始化语句;
5)没想到吧,加上大括号后还能写除定义成员变量以外的语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值