Java代码块

代码块

1. 代码块的作用:用来初始化类、对象
2. 代码块如果有修饰的话,只能使用static.
3. 分类:静态代码块 vs 非静态代码块

静态代码块:用static修饰的代码块

1.可以有输出语句
2.可以对类的属性、类的声明进行初始化操作
3.不可以对非静态的属性初始化,不可以调用非静态的属性和方法
4.若有多个静态的代码块,按照从上到下的顺序依次执行
5.静态代码块的执行要先于非静态代码块
6.静态代码块随着类的加载而加载,且只执行一次

非静态代码块:没有static修饰的代码块

1.可以有输出语句
2.可以对类的属性、类的声明进行初始化操作
3.除了调用非静态的结构外,还可以调用静态的变量和方法
4.如有多个非静态代码块,按照从上到下依次执行
5.每次创建对象,都会执行一次,且优先于构造器执行

代码块执行顺序:由父及子,静态先行。

类什么时候被加载?

1.创建对象实例时(new)

2.创建子类对象实例,父类也会被加载

3.使用类的静态成员时(静态属性、静态方法)

🌰:

public class A {
public A() {
System.out.println("constructor A");
}
{
System.out.println("class A codeBlock1");
}
{
System.out.println("class A codeBlock2");
}
static {
System.out.println("static 1 class A");
}
static {
System.out.println("static 2 class A");
}
}
public class B extends A {
public B() {
System.out.println("constructor B");
}
{
System.out.println("class B codeBlock2");
}
{
System.out.println("class B codeBlock1");
}
static {
System.out.println("static 2 class B");
}
static {
System.out.println("static 1 class B");
}
public static void main(String[] args) {
B b = new B();
}
}

posted @   Lz_蚂蚱  阅读(3)  评论(0编辑  收藏  举报
(评论功能已被禁用)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起