本文共 980 字,大约阅读时间需要 3 分钟。
暂时贴图一张,以后补充
解释:
1.符号引用替换为直接引用【参考:http://blog.csdn.net/maerdym/article/details/8087620】
在java中,一个java类将会编译成一个class文件。在编译时,java类并不知道引用类的实际内存地址,因此只能使用符号引用来代替。比如org.simple.People类引用org.simple.Tool类,在编译时People类并不知道Tool类的实际内存地址,因此只能使用符号org.simple.Tool(假设)来表示Tool类的地址。而在类装载器装载People类时,此时可以通过虚拟机获取Tool类 的实际内存地址,因此便可以既将符号org.simple.Tool替换为Tool类的实际内存地址,及直接引用地址。
2.构造代码块中的代码也是在构造方法中执行的【参考:http://bbs.csdn.net/topics/390635323?page=1】
在编译时的编译器看来会默认将构造代码块中的代码移动到构造方法中,并且移动到构造方法内容的前面。
看如下demo:
1 public class TestCode { 2 3 public TestCode() { 4 System.out.println("构造方法"); 5 } 6 7 { 8 System.out.println("代码块"); 9 }10 11 public static void main(String[] args) {12 new TestCode();13 }14 }
等同于:
1 public class TestCode { 2 3 public TestCode() { 4 System.out.println("代码块"); 5 System.out.println("构造方法"); 6 } 7 8 public static void main(String[] args) { 9 new TestCode();10 }11 }