以下是详细的攻略:
一文搞懂Java中类及static关键字执行顺序
在Java中,类及static关键字的执行顺序是非常重要的问题。本文将为大家详细介绍Java中类及static关键字的执行顺序,以及一些实际的示例分析。
类的执行顺序
在Java中,类的执行顺序如下:
- 加载父类
- 加载子类
- 执行父类的static代码块(不会执行构造方法)
- 执行子类的static代码块(不会执行构造方法)
- 执行父类的构造方法
- 执行子类的构造方法
因此,父类中的static代码块会在子类的static代码块执行之前执行,而所有的构造方法都会在static代码块之后执行。
以下代码展示了类的执行顺序:
class Parent {
static {
System.out.println("执行父类的static代码块");
}
public Parent() {
System.out.println("执行父类的构造方法");
}
}
class Child extends Parent {
static {
System.out.println("执行子类的static代码块");
}
public Child() {
System.out.println("执行子类的构造方法");
}
}
public class Main {
public static void main(String[] args) {
new Child();
}
}
输出结果:
执行父类的static代码块
执行子类的static代码块
执行父类的构造方法
执行子类的构造方法
static的执行顺序
在Java中,static关键字的执行顺序如下:
- 静态变量从上到下按顺序执行赋值(如果有)和static代码块中的代码
- 静态方法只能调用静态变量和静态方法
- 非静态方法既能调用静态方法和静态变量,也能调用非静态变量和非静态方法
以下代码展示了static的执行顺序:
class Test {
static int a = 1;
static {
a = 2;
}
public static void main(String[] args) {
System.out.println(Test.a);
}
static {
a = 3;
}
}
输出结果:3
首先,静态变量a按顺序执行了赋值操作,最后的值为3。然后,静态代码块中的代码也按顺序执行,因此a的值在第二个静态代码块中修改为了3。最后,main方法输出了a的值,也就是3。
总结
本文详细介绍了Java中类及static关键字的执行顺序,并提供了相关的示例代码。理解这些执行顺序是Java编程的基础。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文搞懂java中类及static关键字执行顺序 - Python技术站