A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NO? 中级黑马   /  2014-4-11 12:32  /  942 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态函数 和 构造代码块哪个先执行。

5 个回复

倒序浏览
你想问的问题是不是:静态代码块 和 构造函数哪个先执行
回复 使用道具 举报
构造代码块先执行  , 静态函数调用时候才会执行,
回复 使用道具 举报
  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

构造代码块每次在调用构造函数都会执行,构造函数内代码块,只有在执行对应的构造函数才调用,静态代码块随类加载而加载。只加载一次。

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 袁啟雄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. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
静态代码块在加载的时候执行 构造函数仅当需要的时候才调用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马