代码块
----------
1.局部代码块:
public class CodeDemo {
public static void main(String[] args) {
Do();
// 局部代码块
{
int x = 10;
System.out.println("First = " + x);
}
System.out.println(20);
}
public static void Do() {
// 局部代码块
{
int x = 30;
System.out.println("Second =" + x);
}
}
}
打印结果:
Second =30
First = 10
20
结论: 局部代码块,位于类的方法的内部,是按照在函数里的位置执行的。和普通的代码唯一区别是用完变量即可释放。
2.构造代码块和静态代码块
public class CodeDemo2 {
public static void main(String[] args) {
// 第一次
DoitTest dit = new DoitTest();
System.out.println("---------------");
// 第二次
DoitTest dit1 = new DoitTest();
System.out.println("---------------");
// 第三次
DoitTest dit2 = new DoitTest(21);
}
}
class DoitTest {
int x = 10;
// 静态代码块:类的代码块:随类的加载而加载(只一次)
static {
System.out.println("Doit 静态代码块");
}
// 构造代码块:对象代码块:随对象的创建而出生(多次)
{
x = 20;
System.out.println(x + " Doit 构造代码块");
}
public DoitTest() {
System.out.println(x + " 无参构造函数");
}
public DoitTest(int x) {
this.x = x;
System.out.println(x + " 有参构造函数");
}
}
输出结果:
Doit 静态代码块
20 Doit 构造代码块
20 无参构造函数
---------------
20 Doit 构造代码块
20 无参构造函数
---------------
20 Doit 构造代码块
21 有参构造函数
结论:构造代码块和静态代码块都位于方法外。构造代码块是对象代码块(多次),静态代码块是类代码块(一次加载)。
其执行顺序(在类的放置顺序无所谓)分别是 静态代码块(随类加载)--》构造代码块--》构造函数。
注:构造函数必须在最后执行,不然构造函数的赋值就没有赋值的作用了。