局部代码块:在方法内使用,代码块中定义的变量在外部无法访问。
package lesson11; public class Demo01 { public static void main(String[] args) { //局部代码块 在方法中出现 { int i=10; System.out.println("局部代码块"); } //System.out.println(i); 访问不到 for(int i=0;i<10;i++){ //局部代码块 System.out.println(i); } } }
构造代码块:在方法外使用,每当创建一个对象调用构造方法时都会先执行构造代码块中的内容。
package lesson12; public class Demo01 { public static void main(String[] args) { //构造代码块 类外出现 Person p1 = new Person(); Person p2 = new Person("xiaoming",30); } } class Person{ String name; int age; public Person(){ System.out.println("我是无参的"); } public Person(String name,int age){ this.name = name; this.age = age; System.out.println("我是有参的"); } //构造代码块在构造函数之前调用,每次使用构造方法都会调用该代码块 { System.out.println("我被调用了"); } }
结果:
我被调用了
我是无参的
我被调用了
我是有参的
静态代码块:用static修饰,只有在该代码块所在类被加载时调用,即只调用一次。经常在静态代码块中进行加载驱动等操作。
package lesson13; public class Demo01 { public static void main(String[] args) { //静态代码块,只在类被加载是调用,用于给属性初始化,一般用来加载驱动 Idol idol1 = new Idol("xiaoming",30); Idol idol2 = new Idol("yoona",29); } } class Idol { String name; int age; static String gender; static { gender = "female"; //只能初始化静态属性 System.out.println("我是静态代码块"); } public Idol(String name,int age){ this.name = name; this.age = age; System.out.println("构造方法"); } } 结果: 我是静态代码块 构造方法 构造方法