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

来源:互联网 发布:php 开源任务管理系统 编辑:程序博客网 时间:2024/05/17 20:34

 
刚学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还是在最后 输出吧   如果你认为是位置顺序问题 

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

 
原创粉丝点击