返回顶部

一缕半夏微光

温柔半两,从容一生

导航

动手动脑集合三

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

代码如下:

 

原因:需要在Foo()里面加个参数。

 

题目二:【观察输出结果,总结出“静态初始化块的执行顺序”】

代码如下:

 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 }

 

截图如下:

 

执行顺序:

静态初始化块->初始化块->构造函数

 

题目三:【静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加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 }

 

运行截图如下:

posted on 2020-10-09 00:55  一缕半夏微光  阅读(115)  评论(0编辑  收藏  举报