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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FFF 金牌黑马   /  2013-9-27 21:00  /  1424 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Temp09_27 {

  2.         static  String a="String_a";
  3.         static String b;
  4.        
  5.         String c="String_c";
  6.         String d;
  7.        
  8.         static{
  9.                 printStatic("before static");
  10.                 b="Strint_b";
  11.                 printStatic("after statuc");
  12.         }
  13.        
  14.         public static void printStatic(String title)
  15.         {
  16.                 System.out.println("-------"+title+"-------");
  17.                 System.out.println("a=\""+a+"\"");
  18.                 System.out.println("b=\""+b+"\"");
  19.         }
  20.        
  21.         public Temp09_27()
  22.         {
  23.                 print("before constructor");
  24.                 d="String_d";
  25.                 print("after constructor");
  26.                
  27.                
  28.         }
  29.         public void print(String title)
  30.         {
  31.                 System.out.println("-------"+title+"-------");
  32.                 System.out.println("a=\""+a+"\"");
  33.                 System.out.println("b=\""+b+"\"");
  34.                 System.out.println("c=\""+c+"\"");
  35.                 System.out.println("d=\""+d+"\"");
  36.         }
  37.         public static void main(String[] args)
  38.         {
  39.                 new Temp09_27();
  40.         }
  41. }
复制代码
输出结果:
  1. -------before static-------
  2. a="String_a"
  3. b="null"
  4. -------after statuc-------
  5. a="String_a"
  6. b="Strint_b"
  7. -------before constructor-------
  8. a="String_a"
  9. b="Strint_b"
  10. c="String_c"
  11. d="null"
  12. -------after constructor-------
  13. a="String_a"
  14. b="Strint_b"
  15. c="String_c"
  16. d="String_d"
复制代码
由以上可知Java类属性和对象的初始化顺序为:
1.类属性(静态变量)定义时的初始化,如以上代码中的:statiic String a="String_a"。
2.static 块中的初始化代码,如以上的:static{}中的b="String_b"。
3.对象属性(非静态变量)定义时的初始化,如以上中的:String c="String_c"。
4.构造函数中的初始化代码,如以上构造函数中的:d="String_d"。

自学中总结到的一点规律,希望对同学们有帮助。


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
我记得毕老师的视频里的顺序要多一点,印象里应该是先执行方法区中的初始化,也就是静态代码块,之后才逐步执行堆内存中的(对象部分)的初始化
回复 使用道具 举报
中山狼 发表于 2013-9-27 22:23
我记得毕老师的视频里的顺序要多一点,印象里应该是先执行方法区中的初始化,也就是静态代码块,之后才逐步 ...

毕老师更深入。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马