• 构造器初始化(static)


     1 package demo;
     2 
     3 /*
     4  * 在类 的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,
     5  * 它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
     6  */
     7 public class Test {
     8     public static void main(String[] args) {
     9         House h = new House();
    10         h.f();
    11     }
    12 }
    13 
    14 class Window {
    15     Window(int maker) {
    16         System.out.println("Window(" + maker + ")");
    17     }
    18 }
    19 
    20 class House {
    21     Window w1 = new Window(1);
    22 
    23     House() {
    24         System.out.println("House()");
    25         w3 = new Window(33);
    26     }
    27 
    28     Window w2 = new Window(2);
    29 
    30     void f() {
    31         System.out.println("f()");
    32     }
    33 
    34     Window w3 = new Window(3);
    35 }
    36 //结果:
    37 //Window(1)
    38 //Window(2)
    39 //Window(3)
    40 //House()
    41 //Window(33)
    42 //f()
     1 package demo;
     2 
     3 /*
     4  * 先执行static修饰的成员,而且只被执行一次
     5  */
     6 public class Test1 {
     7     public static void main(String[] args) {
     8         System.out.println("Creating new Cup() in main");
     9         new Cup();
    10         System.out.println("Creating new Cup() in main");
    11         new Cup();
    12         table.f2(1);
    13         cup.f3(1);
    14     }
    15 
    16     static Table table = new Table();
    17     static Cup cup = new Cup();
    18 }
    19 
    20 class Bowl {
    21     Bowl(int maker) {
    22         System.out.println("Bowl(" + maker + ")");
    23     }
    24 
    25     void f1(int maker) {
    26         System.out.println("f1(" + maker + ")");
    27     }
    28 }
    29 
    30 class Table {
    31     static Bowl bowl1 = new Bowl(1);
    32 
    33     Table() {
    34         System.out.println("Table()");
    35         bowl1.f1(1);
    36     }
    37 
    38     void f2(int maker) {
    39         System.out.println("f2(" + maker + ")");
    40     }
    41 
    42     static Bowl bowl2 = new Bowl(2);
    43 }
    44 
    45 class Cup {
    46     Bowl bowl3 = new Bowl(3);
    47     static Bowl bowl4 = new Bowl(4);
    48 
    49     Cup() {
    50         System.out.println("Cup()");
    51         bowl4.f1(2);
    52     }
    53 
    54     void f3(int maker) {
    55         System.out.println("f3(" + maker + ")");
    56     }
    57 
    58     static Bowl bowl5 = new Bowl(5);
    59 }
    60 结果:
    61 Bowl(1)
    62 Bowl(2)
    63 Table()
    64 f1(1)
    65 Bowl(4)
    66 Bowl(5)
    67 Bowl(3)
    68 Cup()
    69 f1(2)
    70 Creating new Cup() in main
    71 Bowl(3)
    72 Cup()
    73 f1(2)
    74 Creating new Cup() in main
    75 Bowl(3)
    76 Cup()
    77 f1(2)
    78 f2(1)
    79 f3(1)
  • 相关阅读:
    梦断代码阅读笔记之一
    你的灯亮着吗阅读笔记之三
    第二次冲刺第八天
    第二次冲刺第七天
    价格计算
    第二次冲刺第六天
    构建之法阅读笔记06
    第二阶段冲刺第五天
    第二阶段冲刺第四天
    第二阶段冲刺第三天
  • 原文地址:https://www.cnblogs.com/whx20100101/p/7543985.html
Copyright © 2020-2023  润新知