// initialization/ConstructorTest2.java// TIJ4 Chapter Initialization, Exercise 2, p158/* Create a class with a String field that is initialized at the point of* definition, and another one that is initialized by the constructor. What is* the difference between the two approaches.*/class Tester2 { String s1; String s2 = "hello"; String s3; Tester2() { s3 = "good-bye"; }}public class ConstructorTest2 { public static void main(String[] args) { Tester2 t = new Tester2(); System.out.println("t.s1: " + t.s1); System.out.println("t.s2: " + t.s2); System.out.println("t.s3: " + t.s3); }}//outt.s1: nullt.s2: hellot.s3: good-bye
初始化未定义的s3被构造器的覆盖了,也就是构造器内的初始化会覆盖类初始化的域。代码来自thinking 练习题的一个大神。