zoukankan      html  css  js  c++  java
  • 动手动脑3

    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}

    运行截图如下:

     

  • 相关阅读:
    Java并发编程实战 第11章 性能与可伸缩性
    Lock的await/singal 和 Object的wait/notify 的区别(转载)
    线程阻塞和挂起(网络收集)
    Java并发编程实战 第10章 避免活跃性危险
    Java并发编程实战 第8章 线程池的使用
    Java并发编程实战 第6章 任务并行 第7章 取消与关闭
    Java并发编程实战 第5章 构建基础模块
    Java编程思想 第21章 并发
    Java并发编程实战 第4章 对象的组合
    Java并发编程实战 第3章 对象的共享
  • 原文地址:https://www.cnblogs.com/zy2481912102/p/14159797.html
Copyright © 2011-2022 走看看