读书人

疯狂Java 软件工程师基本功的16课(对

发布时间: 2012-09-20 09:36:50 作者: rapoo

疯狂Java 程序员基本功的16课(对象与内存的控制)心得(二)

紧接着 疯狂Java 程序员基本功的16课(对象与内存的控制)心得(一),这篇是对类变量初始化的详解

类变量的初始化只是在第一次类初始化时为类变量分配一次内存空间和一次初始化,它可以初始地方有:

public static void main(String[] args) {System.out.println(three);System.out.println(four);StaticTest st = new StaticTest();System.out.println(st.five);System.out.println(st.six);}public static void main(java.lang.String[]);  Code:   0:   getstatic       #4; //Field java/lang/System.out:Ljava/io/PrintStream;   3:   iconst_3   4:   invokevirtual   #5; //Method java/io/PrintStream.println:(I)V   7:   getstatic       #4; //Field java/lang/System.out:Ljava/io/PrintStream;   10:  getstatic       #6; //Field four:I   13:  invokevirtual   #5; //Method java/io/PrintStream.println:(I)V   16:  new     #7; //class StaticTest   19:  dup   20:  invokespecial   #8; //Method "<init>":()V   23:  astore_1   24:  getstatic       #4; //Field java/lang/System.out:Ljava/io/PrintStream;   27:  aload_1   28:  invokevirtual   #9; //Method java/lang/Object.getClass:()Ljava/lang/Class;   31:  pop   32:  iconst_5   33:  invokevirtual   #5; //Method java/io/PrintStream.println:(I)V   36:  getstatic       #4; //Field java/lang/System.out:Ljava/io/PrintStream;   39:  aload_1   40:  getfield        #3; //Field six:I   43:  invokevirtual   #5; //Method java/io/PrintStream.println:(I)V   46:  return

??上面红色标记可以看到,three和five已是直接量(常量)也叫宏变量,编译器会把程序中用到该变量的地方都替换成改变量的值。

读书人网 >编程

热点推荐