为什么输出的顺序先是CodeBlock的静态代码块而不是CodeBlock的主方法

为什么输出的顺序先是CodeBlock的静态代码块而不是CodeBlock的主方法


class Code{
   //创建外部类Code构造块(构造块)
    {
        System.out.println("Code的构造块");
    }

    //创建外部类Code静态代码块(静态代码块)

 static{
     System.out.println("Code的静态代码块");
 }
    //创建外部类Code构造方法(构造方法)
 public  Code(){
     System.out.println("Code的构造方法");
 }
}


public class CodeBlock{
    // 创建CodeBlock的构造块
 {
     System.out.println("CodeBlock的构造块");
 }


    //创建CodeBlock的静态代码块
 static{
     System.out.println("CodeBlock的静态代码块");
 }


    //创建CodeBlock的构造方法
  public CodeBlock(){
     System.out.println("CodeBlock的构造方法");
 }


    public static void main(String[] args){
       //编写代码测试运行优先顺序,运行结果参见效果图
       System.out.println("CodeBlock的主方法");
       System.out.println("产生Code类实例对象");
               Code c=new Code();
    System.out.println("产生CodeBlock类实例对象");
          CodeBlock cb=new CodeBlock();         
    }
}


正在回答

登陆购买课程后可参与讨论,去登陆

4回答

你   public static void main    方法是在   CodeBlock  类里定义的  所以先有   CodeBlock 类

Code类   只不过是     public static void main    方法  去调用的一个类   在我调用的时候加载就好了

没必要也在之前先创建

  • 慕标4031731 提问者 #1
    似乎理解了很多,感谢感谢
    2020-05-22 14:13:42
好帮手慕阿园 2020-05-22 14:10:17

同学你好,加载的时候是先加载CodeBlock类,加载CodeBlock静态代码块;然后执行主方法,创建Code类对象,加载Code类,加载Code的静态代码块

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


好帮手慕阿园 2020-05-22 10:21:21

同学你好,上面同学表述的很好

因为static的代码是静态代码块,他是随着类加载而加载的。加载CodeBlock类时,加载静态代码块;先输出CodeBlock的静态代码块,然后再去执行CodeBlock的主方法

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 提问者 慕标4031731 #1
    那加载也是先加载Code类,加载Code类时,加载静态代码块;先输出Code的静态代码块,然后再去执行CodeBlock的主方法
    2020-05-22 10:23:59
苍星乱舞 2020-05-21 23:17:16

你虽然是主方法,但你也是  类里的成员

那么肯定是先创建好类,你这类里的方法才能开始执行

就好比  人 有说话的功能,你不能人都不存在就开始说话

你要先出生哭一下,再说话

假设哭就是  静态代码块

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师