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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘一博 中级黑马   /  2014-5-27 12:06  /  718 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class StaticCode {
  2.         static{
  3.                 System.out.println(StaticCode.i);
  4.         }
  5.         static int i = 9;
  6.        
  7.         public static void main (String[] ar){
  8.                 new StaticCode();
  9.         }
  10. }
复制代码

为什么输出结果为0,这里面涉及到的初始化过程是什么,请大神解答一下

2 个回复

倒序浏览
public class StaticCode {
        static{
                System.out.println(StaticCode.i);
        }
        static int i = 9;
        
        public static void main (String[] ar){
                new StaticCode();
        }
}
要注意这里代码的执行顺序,如果把static int i = 9;调整到static{}的前面,输出就是9,至于为什么你的输出是0,知道原因了吧。
回复 使用道具 举报
vampire.007 发表于 2014-5-27 12:33
public class StaticCode {
        static{
                System.out.println(StaticCode.i);

我知道放在前面是9,你能解释的详细一些吗,它的初始化顺序是什么,还有涉及的内存空间是怎么开辟的,为什么放在前面是9,放在后面是0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马