java读书笔记(1)-对象与内存控制
一、Java中类的初始化分为2个阶段:
1、为类变量分配内存空间;
2、按初始化代码(定义时指定初始值和初始化代码块中执行初始值)的排列顺序对类变量执行初始化;
看个例子:
public class App { public App(){ time = 5; } { time = 3; } int time = 4; public static void main( String[] args ) { System.out.println( "Hello World!" ); } }
javap -c App.class命令:
通过javap命令可以看到:初始化代码块和赋值语句会根据编写的顺序合并到类的构造方法中,time赋值的顺序是 time = 3,time =4,time=5;
二、父子实例
class Base{ int count = 2; public void display(){ System.out.println(count); } } class Derivd extends Base{ int count = 200; public void display(){ System.out.println(count); } } public static void main( String[] args ) { Base base = new Derivd(); System.out.println(base.count);//输出2 base.display();//输出200 }
三、final修饰符
当定义final变量时就为该变量指定了初始值,而且该初始值可以在编译时就确定下来,那这个final变量本质上就是一个“宏变量”,编译器会把程序中所有用到该变量的地方直接替换成该变量的值;