Java中 定义语名 与方法 的执行顺序

本文通过一个具体的Java代码示例解释了类的构造器与成员变量初始化的执行顺序,帮助初学者理解Java中对象创建过程的具体步骤。

 
刚学Java学到类不久的朋友,可能会在这定义语句与构造器的执行顺序问题上不能理解。往往是心里想的结果与执行结果有所出处。看下面这段代码:

看完这代码后 你心里已有输出结果了吧  是不是与下面的调试出来的结果有所不同:

class Mug  
{

   Mug(int   marker)
   {
        System.out.println("Mug(" + marker +  ")");
    }

}

public class Mugs 
 {
     Mugs()
    { 
        System.out.println("Mugs()");
    }
 
    Mug   c1;
    Mug   c2;
    { 
        c1   =   new   Mug(1);
        c2   =   new   Mug(2);
        System.out.println("c1 & c2 initialized");
    }
public static void main(String [] args){
        System.out.println("Inside main()");
        Mugs x=new Mugs();

  }

}

 Inside   main()
       Mugs()
       Mug("  1  ")
      Mug("  2 ")
      c1   &   c2   initialized

 关于这点 其实原因在于:程序中 先执行定义语句  然后在执行方法语句  无论是构造器也好 一定先执行的是定义语句  

   如果你认为这样不对  是代码块的原因

   那我们也可以 另定一个代码块 里面放一个简单的输出语句 试试看:

我们把它加在Mugs构造器的下面

{
 
  System.out.println("11111111111111111111111111");
 
 }

 

这下调试的结果为:

 Inside   main()
       Mugs()
       Mug("  1  ")
      Mug("  2 ")
      c1   &   c2   initialized

      11111111111111111111111111

 这回 代码块 中的全1还是在最后 输出吧   如果你认为是位置顺序问题 

可以调试一下 看看  结果会有所不同吗? 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值