java中 构造代码块、static代码块和局部代码块的区别

package com.aop8.classload;

class StaticCode {
	int age;
	// static 代码块
	static {
		System.out.println("111--static ");
	}
	// 构造代码块
	{
		System.out.println("22 ");
	}

	// 构造函数
	StaticCode(int age) {
		this.age = age;
		System.out.println("constructor: " + age + ",");
	}

	void show() {
		// 局部代码块
		{
			int age = 30;
		}
		System.out.println("show: age=" + age + ",");
	}
}

public class StaticCodeDemo {
	public static void main(String[] args) {
		StaticCode p1 = new StaticCode(20);
		p1.show();
		System.out.println("========================");
		StaticCode p2 = new StaticCode(20);
	}
}

运行结果:

111--static 
22 
constructor: 20,
show: age=20,
========================
22 
constructor: 20,

总结:
static代码块 随着类的加载,只加载一次。作用是初始化类。
构造代码块,可以给所有对象进行初始化的。创建几个对象就调用几次,是给对象进行通用性的初始化。
构造函数 是给对应的对象进行针对性的初始化。
局部代码块 限定函数中变量的生命周期,age=30局部代码执行完。自动释放掉了。

你可能感兴趣的:(Java基础,面试)