1:【以下代码为何无法通过编译?哪儿出错了?】
代码如下:

原因:需要在Foo()里面加个参数。
2:【观察输出结果,总结出“静态初始化块的执行顺序”】
代码如下:
1 public class TestStaticInitializeBlock {
2 public static void main(String[] args) {
3 new Leaf();
4 }
5 }
6
7
8 class Root
9 {
10 static
11 {
12 System.out.println("Root的静态初始化块");
13 }
14 {
15 System.out.println("Root的普通初始化块");
16 }
17 public Root()
18 {
19 System.out.println("Root的无参数的构造器");
20 }
21 }
22 class Mid extends Root
23 {
24 static
25 {
26 System.out.println("Mid的静态初始化块");
27 }
28 {
29 System.out.println("Mid的普通初始化块");
30 }
31 public Mid()
32 {
33 System.out.println("Mid的无参数的构造器");
34 }
35 public Mid(String msg)
36 {
37 //通过this调用同一类中重载的构造器
38 this();
39 System.out.println("Mid的带参数构造器,其参数值:" + msg);
40 }
41 }
42 class Leaf extends Mid
43 {
44 static
45 {
46 System.out.println("Leaf的静态初始化块");
47 }
48 {
49 System.out.println("Leaf的普通初始化块");
50 }
51 public Leaf()
52 {
53 //通过super调用父类中有一个字符串参数的构造器
54 super("Java初始化顺序演示");
55 System.out.println("执行Leaf的构造器");
56 }
57
58 }

执行顺序:
静态初始化块->初始化块->构造函数
3:【静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)? 请编写代码验证你的想法。】
代码如下:
1 public class Quiet { 2 int x=100; 3 static int y=200; 4 public static void method() { 5 System.out.println("实例变量x="+new Quiet().x); 6 System.out.println("静态变量y="+y); 7 } 8 public static void main(String[] args) { 9 Quiet.method(); 10 Quiet quiet=new Quiet(); 11 System.out.println("x="+quiet.x); 12 } 13}
运行截图如下:


浙公网安备 33010602011771号