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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高欢欢 中级黑马   /  2012-7-16 13:31  /  1296 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test01 {
{
b = 5 ;
a = b + 1 ;
}
int a ;
int b ;
}


点评

你的问题具体是?  发表于 2012-7-16 16:07

4 个回复

倒序浏览
帅哥
请问 你想知道什么{:soso_e132:}
回复 使用道具 举报
你的程序运行结果会程序报错:
   非法向前引用。
     原因是变量没有先定义,后引用。
     具体的过程如下,希望对你有所帮助,。

类加载主要有三个过程:装载,链接和初始化。
   装载是最好理解的,就是将编译生成的二进制文件装到内存中。
   链接:这个过程又可以分为三个子过程,即校验,准备和解析,
校验当然就是对已装入内存中的二进制类文件校验,检查其是否符合class文件的规范,
同时它还要提取一些类的关键信息,比如变量和方法。准备就是对类变量分配存储空间,同时会初始化。
解析:将符号引用转成直接引用;也就是对引用变量分配空间,并初始化。注意;在链接的时候会对变量分配空间并初始化,
但这时候的初始化并不是很可靠的。
    初始化:这时候会执行真正的初始化语句即执行构造方法对变量初始化。
由以上的过程可以得出在类加载的时候执行的顺序为:静态变量ok  ->  静态代码块  ->
变量ok  ->  普通代码块 ->  构造方法开始执行。

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
{
b = 5 ;
a = b + 1 ;
}
非静态代码块,在没有创建对象时根本不会执行到。只有静态代码块在类加载时自动执行的。非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。且执行顺序为静态代码块------非静态代码块----构造函数。
写个例子
  1. public class TestStaticCon {
  2.         public static int a = 0;

  3.         static {
  4.                 a = 10;
  5.                 System.out.println("父类的静态代码块在执行a=" + a);
  6.         }
  7.        
  8.         {
  9.                 a = 8;
  10.                 System.out.println("父类的非静态代码块在执行a=" + a);
  11.         }

  12.         public TestStaticCon() {
  13.                 this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法
  14.                 System.out.println(a);
  15.                 System.out.println("父类无参构造方法在执行a=" + a);
  16.         }

  17.         public TestStaticCon(String n) {
  18.                 System.out.println(n);
  19.                 System.out.println(a);

  20.         }

  21.         public static void main(String[] args) {
  22.                 TestStaticCon tsc = null;
  23.                 System.out.println("!!!!!!!!!!!!!!!!!!!!!");
  24.                 tsc = new TestStaticCon();
  25.         }
  26. }
复制代码
运行结果

捕获.PNG (18.08 KB, 下载次数: 8)

捕获.PNG

评分

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

查看全部评分

回复 使用道具 举报
初始代码块  你没实例化一次它就执行一次
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马