代码逻辑题之继承-静态代码块-main方法执行顺序

前提知识:

  (暂未发布)面向对象继承相关知识

  (暂未发布)static与静态代码块

  JVM入门之main方式详解

  (暂未发布)JVM加载类的顺序

public class ParentMainTest {
    static int x;
    static {
        x++;
        System.out.println("ParentMainTest_static..." + x);
    }
    public static void main(String[] args) {
        new SonMainTest(6);
    }
    int n = 10;
    {
        n++;
        System.out.println("ParentMainTest..." + n);
    }

}
public class SonMainTest extends  ParentMainTest{
    SonMainTest(int a){
        this.a=a;
        System.out.println("SonMainTest.a=" + a );
    }
    int a;
    {
        System.out.println("SonMainTest..."+this.a);
    }
    static
    {
        x++;
        System.out.println("SonMainTest_static..." +x);
    }
}

输出结果:
ParentMainTest_static...1
SonMainTest_static...2
ParentMainTest...11
SonMainTest...0
SonMainTest.a=6

答案解析

具体分析:等我有时间再酌情分析

原文地址:https://www.cnblogs.com/qq1452753919/p/10556081.html

时间: 2024-10-10 08:01:08

代码逻辑题之继承-静态代码块-main方法执行顺序的相关文章

java中静态代码块,非静态代码块,构造函数执行顺序

关于静态代码块 静态代码块的写法: static { System.out.println("我是静态代码块"); } 静态代码块的特点: 1.执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员. 2.随着类的加载而执行,而且只执行一次 先说一下类加载,一个程序要想运行,首先要把代码加载到内存中,然后才能去和CPU交流,这是冯诺依曼计算机规定的.Java也是一样,Java的.class字节码文件要想执行,首先也

静态代码块-构造方法等执行顺序

jvm在为一个类构造对象时: 1.首先执行静态代码,如果多个静态代码,顺序执行 2.然后执行普通代码 3.然后执行构造方法 只要类再被jvm加载时,静态代码块就会执行 例如 order.什么 原文地址:https://www.cnblogs.com/zhy-study/p/9243610.html

Java中动态代码块,构造代码块,静态代码块之间的执行顺序

Java中动态代码块,构造代码块,静态代码块之间的执行顺序 /** * Java中动态代码块,构造代码块,静态代码块之间的执行顺序 * @author Administrator * */ class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A class"); } static { System.out.println("st

Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例

Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例 2018年05月08日 08:12:48 WJN不忘初心 阅读数:34 除了说普通代码块,静态代码块,构造代码块的执行顺序外,还有静态方法,静态变量等,都放在一起的话,这个执行顺序,怎么确定. 我就实际弄个代码,看下执行顺序. [java] view plain copy public class Line { static { System.out.println("静态代码块执行:loading line"); }

java中成员变量、代码块、构造函数执行顺序

1.java虚拟机运行程序,首先需要装载类,安装现装载父类,初始化父类的静态代码块和静态成员变量 再load子类.初始化子类静态代码块和成员变量 2.load完毕父类与子类后,从main函数入口执行程序,先输出,接着new实例化Beetle类,则先实例化父类Insect,实例化父类时,先初始化非静态成员变量和非静态代码块,接着执行父类构造方法 再实例化子类,实例化子类时,先初始化非静态成员变量和非静态代码块,接着执行子类构造方法. package it.xiangnan.test; public

java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序

4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print("2"); } } class B extends A{ static { System.out.print("a"); } public B() { System.out.print("b"); } } public class Hello { pu

Java构造块,静态代码块,构造方法执行顺序

构造块:直接写在类中的代码块 静态代码垮:使用static关键字声明的代码块 静态代码块先于构造块,构造方法执行,而且只在类加载时候执行一次,后面在类实例化的时候会先执行构造块,而且每 执行实例化一个对象,就会执行一次构造块,执行完构造块会执行构造方法. public class ConstructorCodeTest { public static void main(String[] args) { Demo d1=new Demo(); Demo d2=new Demo(); Demo d

Java静态代码块、代码块及构造函数执行顺序

根据以下程序进行分析 定义一个父类 package sas.LearnJava; public class ExcuteOrderTest { { System.out.println("我是在父类开始的普通代码块!"); } public ExcuteOrderTest() { System.out.println("我是父类的无参构造函数!"); } public void showSomething() { System.out.println("我

Java静态语句块、语句块、构造方法执行顺序

package com.imooc.practice; class Parent{ public Parent(){ System.out.println("Parent构造方法执行!"); } { System.out.println("Parent非静态语句块执行!"); } static{ System.out.println("Parent静态语句块执行!"); } } public class Child extends Parent{