FS370 2019-04-23 11:34 采纳率: 0%
浏览 272
已结题

请问这个题执行顺序是什么

》》》》》》问题1
package java_study;
/**

  • 请说出下列代码的输出结果
    */
    public class A {

    private static A a = new A();

    private C c = new C();

    static {
    System.out.println("3");
    }

    public A() {
    System.out.println("4");
    }

    public static void main(String[] args) {

    System.out.println("Hello");
    

    }

}

//定义一个父类B

class B{

B(){
    System.out.println("B的构造方法");
}

}

//定义一个子类C 继承 B

class C extends B{

static {
    System.out.println("1");
}
public C(){
    super();
    System.out.println("2");
}

}

》》》》》》》》问题2
如果该父类引用所调用的方法参数列表未定义,就调用该父类的父类中查找,如果还没找到就强制向上类型转换参数列表中的参数类型,具体优先级高到低依次如下:

this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。

能给我解释一下这方面的问题吗??

  • 写回答

2条回答 默认 最新

  • Your_Exios 2019-04-25 11:32
    关注

    执行结果:
    1
    B的构造方法
    2
    4
    3
    Hello

    虚拟机首先,会加载类的信息,如果类中有静态方法,则会执行静态方法,有多个静态方法,则按顺序执行,构造方法则是在实例化该类(创建对象)时才调用。
    虚拟机首先,优先加载含有main函数的主类,所以先加载A类,发现A类中有一个静态代码成员,所以先执行

    private static A a = new A();
    

    new A()则是创建对象了,就会执行A的构造函数,实例化A的时候,会初始化A的成员变量,也就是:

    private C c = new C();
    

    这时,虚拟机会先去加载C的类信息,发现其中也有静态方法,则会执行:

    static {
        System.out.println("1");
    }
    

    加载完后,会接着刚刚的程序,接着实例化C:

    public C(){
        super();
        System.out.println("2");
    }
    

    这个spuer();则是构造父类了,然后就会去构造B:

    B(){
        System.out.println("B的构造方法");
    }
    

    执行完后,接着刚刚的C的构造方法执行:

    System.out.println("2");
    

    此时,A类的成员变量已经初始化完毕了,可以构造A类了,执行A的构造函数:

    public A() {
    System.out.println("4");
    }
    

    此时,A的第一个静态方法执行完毕,执行第二个静态方法:

    static {
                System.out.println("3");
            }
    

    执行完后,所有的类信息都加载完毕了,然后执行主函数:

    public static void main(String[] args) {
    
    System.out.println("Hello");
    }
    

    希望对你有帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月7日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)