黑马程序员技术交流社区

标题: 代码块的执行顺序 [打印本页]

作者: 孙铭泽    时间: 2012-8-20 22:28
标题: 代码块的执行顺序
构造代码块,局部代码块,构造方法,这里面的东西我有点混淆了,不知道是怎样体现执行的 ,
求用小程序来体现,并讲解一下。
作者: 杨鹏鹏    时间: 2012-8-20 22:49
package com.itheima.test;

public class HelloWorld extends Hello{
           {  
                // 普通代码块2  
                System.out.println("普通代码块2执行");  
            }
     Hello hello=new Hello();
    static{  
        // 静态代码块  
        System.out.println("静态代码块执行");  
    }  

   HelloWorld(){
            System.out.println("构造方法执行");
    }
   
        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                HelloWorld  df=new HelloWorld();
                    }  
       
}
class Hello{
         Hello(){
                 System.out.println("我是父类,我先执行");
         }
}
结果为静态代码块执行
我是父类,我先执行
普通代码块2执行
我是父类,我先执行
构造方法执行

作者: 黑马王建伟    时间: 2012-8-20 23:06
  1. public class Hello extends Person{
  2.         static{
  3.                  System.out.println("子类静态代码块");
  4.          }
  5.          {
  6.                  System.out.println("子类构造代码块");
  7.          }
  8.          public Hello(){
  9.                  System.out.println("子类构造方法");
  10.          }
  11.         public static void main(String[]args){
  12.                 Hello h=new Hello();
  13.         }
  14. }
  15. class Person{
  16.          static{
  17.                  System.out.println("父类静态代码块");
  18.          }
  19.          {
  20.                  System.out.println("父类构造代码块");
  21.          }
  22.          public Person(){
  23.                  System.out.println("父类构造方法");
  24.          }
  25. }
复制代码

作者: 吴小东    时间: 2012-8-21 18:02
  1. class ClassDemo extends MyClass
  2. {
  3.         static
  4.         {
  5.                 System.out.println("ClassDemo,静态代码块");
  6.         }
  7.         {
  8.                 System.out.println("ClassDemo,代码块");
  9.         }
  10.         ClassDemo(){System.out.println("ClassDemo,构造方法");}
  11.         public static void main(String[] args)
  12.         {
  13.                 ClassDemo cd = new ClassDemo();
  14.         }
  15. }

  16. class MyClass extends Person
  17. {
  18.         static
  19.         {
  20.                 System.out.println("MyClass,静态代码块");
  21.         }
  22.         {
  23.                 System.out.println("MyClass,代码块");
  24.         }
  25.         MyClass(){System.out.println("MyClass,构造方法");}
  26. }
  27. class Person
  28. {
  29.         static
  30.         {
  31.                 System.out.println("Person,静态代码块");
  32.         }
  33.         {
  34.                 System.out.println("Person,代码块");
  35.         }
  36.         Person(){System.out.println("Person,构造方法");}
  37. }
复制代码
运行结果
Person,静态代码块
MyClass,静态代码块
ClassDemo,静态代码块
Person,代码块
Person,构造方法
MyClass,代码块
MyClass,构造方法
ClassDemo,代码块
ClassDemo,构造方法
作者: 唐杨老师    时间: 2012-8-21 19:51
解释的真清楚.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2