java静态代码加载顺序 java静态方法加载顺序

jsp中 java代码、js、html代码 加载的顺序jsp中是先编译“java代码”为静态代码,之后从代码第一行开始一直扫描到到代码最后一行 。
解释:jsp是可以动态加载的 , 也就是说jsp变更不需要重启项目,如果里面有java代码的话,加载jsp的时候先编译java代码,如果有错误,直接抛出错误,不继续运行 。如果没错误的话,扫描出body中的代码显示到页面 , 之后再加载js 。
java静态代码块 类加载顺序问题 。原因就是一句话:先有了父亲,才会有儿子!
程序运行时,加载AB两类,因为A是B子类,所以先加载B类,Load B,再加在A类 LoadA,调用A a = new A()代码时,会先调用其父类B的构造方法 Create B 再调用A的构造方法 Create A
java类加载先后顺序1.父类静态代码块;
2.子类静态代码块;
3.父类非静态代码块;
4.父类构造函数;
5.子类非静态代码块;
6.子类构造函数;
举例:
public class ExA {
static {
System.out.println("父类静态代码块 。");
}
public ExA() {
System.out.println("父类构造函数 。");
}
{
System.out.println("父类非静态代码块 。");
}
public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
static {
System.out.println("子类静态代码块 。");
}
{
System.out.println("子类非静态代码块 。");
}
public ExB() {
System.out.println("子类构造函数 。");
}
}
执行结果:父类静态代码块 。子类静态代码块 。父类非静态代码块 。父类构造函数 。子类非静态代码块 。子类构造函数 。
java 调用静态方法和构造函数和静态块执行的先后顺序java中首先是静态块先执行,静态方法,最后是构造函数 。示例如下:
public class ExA {
static {
System.out.println("父类--静态代码块");
}
public ExA() {
System.out.println("父类--构造函数");
}
{
System.out.println("父类--非静态代码块");
}
public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
static {
System.out.println("子类--静态代码块");
}
{
【java静态代码加载顺序 java静态方法加载顺序】System.out.println("子类--非静态代码块");
}
public ExB() {
System.out.println("子类--构造函数");
}
}
执行结果
=====
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
java静态代码块真的会优先执行吗嗯,是的,静态代码块只会加载一次,因为在类加载器进行类加载的时候就已经把它放到内存中了 。看如下代码:
public class StaticDemo {
static{
System.out.println("Top");
}
public static void main(String[] args) {//迟于static块
System.out.println("main方法");
}
static{ //直接加载 优先于main方法
System.out.println("Bottom");
}
}
上面这段代码将会依次输出:Top、Bottom、main方法
java中的静态代码块、代码块、构造器的执行顺序是怎样呢,这三者有什么作用呢先说执行顺序:我们在new一个对象时,如果类还没加载,就需要先将类加载到内存,此时就会执行静态代码块,在创建对象时,是先执行代码块 , 然后执行构造器 。所以静态代码块、代码块、构造器的执行顺序是:静态代码块→代码块→构造器 。
再说作用:静态代码块是用于初始化类的(在加载类时执行,只执行一次),代码块是用于初始化对象的(在创建对象时执行,每次创建对象时都执行) , 构造器是用于创建对象的 。

推荐阅读