CodeBlock -- 代码块

356 阅读2分钟

代码块:用大括号包括起来的一段代码。代码块内部的局部变量的最大作用域就是这个大括号,一旦执行出了大括号,局部变量就会JVM销毁释放。

1.局部代码块:

代码块写在方法内部,它在代码的执行顺序上就是顺序

作用:限制局部变量的生命周期。

public class CodeBlock {


public static void main(String[] args) {

System.out.println("我是普通的打印----");

{

int a = 10;

System.out.println("----" + a);

}

System.out.println("我是普通的打印----");

}

}

打印结果:

我是普通的打印----

----10

我是普通的打印


2.构造代码块:

名如其实,构造代码块写在类中方法外,在构造方法调用的时候被调用,并且优先于构造方法调用前执行。

构造代码块的作用:可以把构造方法里存放共同的代码。

public class CodeBlock {


public static void main(String[] args) {

{

int a = 10;

System.out.println(a);

}

//

new Student();

new Student("张三", 23);

}


}


class Student {

String name;

int age;

public Student() {

System.out.println("空参构造方法");

}


public Student(String name, int age) {

super();

this.name = name;

this.age = age;

System.out.println("有参构造方法");

}

{

System.out.println("我是构造代码块");

}

}

打印结果:

10

我是构造代码块

空参构造方法

我是构造代码块

有参构造方法




3.静态代码块:

和构造代码块的位置一样,不过是加了一个静态修饰词:static。

静态代码块随着类的加载而加载,并且只初始化一次。

作用:初始化类。

public class CodeBlock {


public static void main(String[] args) {

{

int a = 10;

System.out.println(a);

}

//

new Student();

new Student("张三", 23);

System.out.println("---------");

new Student();

new Student("李四", 20);


}


}


class Student {

String name;

int age;

public Student() {

System.out.println("空参构造方法");

}


public Student(String name, int age) {

super();

this.name = name;

this.age = age;

System.out.println("有参构造方法");

}

{

System.out.println("我是构造代码块");

}

static {

System.out.println("我是静态代码块");

}

}


打印结果:

10

我是静态代码块

我是构造代码块

空参构造方法

我是构造代码块

有参构造方法

---------

我是构造代码块

空参构造方法

我是构造代码块

有参构造方法



ps:静态代码块优先于主函数执行!


public class CodeBlock {


public static void main(String[] args) {

{

int a = 10;

System.out.println(a);

}

//

new Student();

}


static {

System.out.println("我是主方法外的静态代码块");

}



}


class Student {

String name;

int age;

public Student() {

System.out.println("空参构造方法");

}


public Student(String name, int age) {

super();

this.name = name;

this.age = age;

System.out.println("有参构造方法");

}

{

System.out.println("我是构造代码块");

}

static {

System.out.println("我是静态代码块");

}

}


打印结果:

我是主方法外的静态代码块

10

我是静态代码块

我是构造代码块

空参构造方法