黑马程序员技术交流社区

标题: 小问题 [打印本页]

作者: NO?    时间: 2014-4-11 12:32
标题: 小问题
静态函数 和 构造代码块哪个先执行。
作者: 年轻的老头    时间: 2014-4-11 12:39
你想问的问题是不是:静态代码块 和 构造函数哪个先执行
作者: luoyilan222    时间: 2014-4-11 12:48
构造代码块先执行  , 静态函数调用时候才会执行,
作者: H._张_♂    时间: 2014-4-11 13:38
  1. import org.omg.CORBA.INTERNAL;

  2. public class Test2 {

  3.         public static void main(String[] args) {
  4.                 // TODO 自动生成的方法存根
  5.                 T t = new T();
  6.         }

  7. }
  8. class T{
  9.         {
  10.                 System.out.println("构造代码块执行");
  11.         }
  12.         static{
  13.                 System.out.println("静态代码块执行");
  14.         }
  15.        
  16.         T(){
  17.                 System.out.println("构造函数内代码块1");
  18.         }
  19.         T(int i){
  20.                 System.out.println("构造函数内代码块2");
  21.         }
  22. }
复制代码

输出结果顺序为
//静态代码块执行
//构造代码块执行
//构造函数内代码块1

构造代码块每次在调用构造函数都会执行,构造函数内代码块,只有在执行对应的构造函数才调用,静态代码块随类加载而加载。只加载一次。
作者: 袁啟雄x    时间: 2014-4-11 15:05
本帖最后由 袁啟雄x 于 2014-4-11 15:09 编辑

静态代码只会在第一次加载类的时候执行一次.
非静态代码块每次都在新建对象是执行一次.顺序比构造函数优先
如下代码
  1. public class Test {
  2.        
  3.         public Test(){
  4.                 System.out.println("构造函数");
  5.         }
  6.        
  7.         {
  8.                 System.out.println("非静态代码块");
  9.         }
  10.        
  11.         static{
  12.                 System.out.println("静态代码块");
  13.         }
  14.        
  15.         public static void main(String[] args) {
  16.                 new Test();
  17.                 new Test();
  18.         }

  19. }
复制代码




作者: K.L.Zous    时间: 2014-4-11 16:14
静态代码块在加载的时候执行 构造函数仅当需要的时候才调用




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