package demo;

 /*
* 在类 的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,
* 它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
*/
public class Test {
public static void main(String[] args) {
House h = new House();
h.f();
}
} class Window {
Window(int maker) {
System.out.println("Window(" + maker + ")");
}
} class House {
Window w1 = new Window(1); House() {
System.out.println("House()");
w3 = new Window(33);
} Window w2 = new Window(2); void f() {
System.out.println("f()");
} Window w3 = new Window(3);
}
//结果:
//Window(1)
//Window(2)
//Window(3)
//House()
//Window(33)
//f()
 package demo;

 /*
* 先执行static修饰的成员,而且只被执行一次
*/
public class Test1 {
public static void main(String[] args) {
System.out.println("Creating new Cup() in main");
new Cup();
System.out.println("Creating new Cup() in main");
new Cup();
table.f2(1);
cup.f3(1);
} static Table table = new Table();
static Cup cup = new Cup();
} class Bowl {
Bowl(int maker) {
System.out.println("Bowl(" + maker + ")");
} void f1(int maker) {
System.out.println("f1(" + maker + ")");
}
} class Table {
static Bowl bowl1 = new Bowl(1); Table() {
System.out.println("Table()");
bowl1.f1(1);
} void f2(int maker) {
System.out.println("f2(" + maker + ")");
} static Bowl bowl2 = new Bowl(2);
} class Cup {
Bowl bowl3 = new Bowl(3);
static Bowl bowl4 = new Bowl(4); Cup() {
System.out.println("Cup()");
bowl4.f1(2);
} void f3(int maker) {
System.out.println("f3(" + maker + ")");
} static Bowl bowl5 = new Bowl(5);
}
结果:
Bowl(1)
Bowl(2)
Table()
f1(1)
Bowl(4)
Bowl(5)
Bowl(3)
Cup()
f1(2)
Creating new Cup() in main
Bowl(3)
Cup()
f1(2)
Creating new Cup() in main
Bowl(3)
Cup()
f1(2)
f2(1)
f3(1)

构造器初始化(static)的更多相关文章

  1. Chapter5_初始化与清理_构造器初始化

    一.构造器初始化的基本顺序 在使用构造器进行初始化时,最需要注意的是初始化的顺序,这种方法可以给初始化的顺序带来很大的灵活性.看如下的一个例子. class Window{ Window(int ma ...

  2. Chapter5_初始化与清理_用构造器初始化

    接下来进入第五章,java中初始化和清理的问题,这是两个涉及安全的重要命题.初始化的功能主要是为库中的构件(或者说类中的域)初始化一些值,清理的功能主要是清除程序中不再被需要的元素,防止资源过分被垃圾 ...

  3. Java基础语法05-面向对象-封装-包-构造器-初始化

    封装 面向对象三大特性:封装.继承.多态 封装的好处 1.调用者:方便使用/简化使用 2.设计者:安全,可控 隐藏对象内部的复杂性,只对外公开简单的接口.便于外界调用,从而提高系统的可扩展性.可维护性 ...

  4. 使用Objective-C的+(void)initialize初始化static变量

    在<Objective C类方法load和initialize的区别>一文中,我介绍了Objective-C对待+(void)initialize和+(void)load两个方法在编译和执 ...

  5. Spring 类构造器初始化实例

    构造方法类Bean1 package com.hao947.bean; public class Bean1 { public Bean1() { System.out.println("b ...

  6. java初始化笔记

    构造器初始化static块与非static块区别:对象创建时都做块的初始化,非static块仅在实例创建时初始化,static块在类被第一次加载时初始化数组初始化注意点:1.数组定义时最好在定义的同时 ...

  7. C++ static、const和static const 以及它们的初始化

    转自C++ static.const和static const 以及它们的初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. s ...

  8. 【转】forbids in-class initialization of non-const static member不能在类内初始化非const static成员

    转自:forbids in-class initialization of non-const static member不能在类内初始化非const static成员 今天写程序,出现一个新错误,好 ...

  9. Java静态变量的初始化(static块的本质)

    Java静态变量的初始化(static块的本质) 标签: javaclassstring编译器jdk工作 2010-02-06 07:23 33336人阅读 评论(16) 收藏 举报  分类: Jav ...

随机推荐

  1. 关于git CRLF LF结尾的问题

    在使用git的过程中,如果我们的项目是跨平台开发的 那么CRLF的处理也许会成为一个很头疼的事情,有可能会出以下的莫名其妙的问题: 我们的某个开发人员在linux上提交的一个文件 当从windows上 ...

  2. 试一下Markdown

    Markdown 没想到博客园居然能够有markdown这样的写法了,以前觉得有自定义CSS已经非常不错了,现在居然加入Markdown,太值得称赞了.国内的博客系统,应该首屈一指了. 强调 你要走, ...

  3. E - Coin Game

    After hh has learned how to play Nim game, he begins to try another coin game which seems much easie ...

  4. webpack 配置

    https://segmentfault.com/a/1190000009454172

  5. STM FLASH在线编程 升级

    注意字节到 stm flash 顺序是反的 例如 12 34 56 78 世纪写入内存 应该是 78 56 34 12

  6. [No0000175]maven常用命令集合(收藏大全)

    抽了点时间,整理了一些maven常用命令参数,以便参考:参考了maven官网和网上其他一些maven追随者的文件,不在此一一列举,但表示感谢! mvn命令参数 mvn -v, --version 显示 ...

  7. [No0000119]什么是柳比歇夫的时间事件记录法

    上图是我过去一年来做的时间事件记录中的某几天的记录文字.从接触到这种方法以来,也就是2009年的7月31日到今天,我已经作了一年多时间的记录.那么什么是时间事件记录?很简单,就像那两幅图片上所展示的, ...

  8. LU decomposition can be viewed as the matrix form of Gaussian elimination.

    https://en.wikipedia.org/wiki/LU_decomposition One way to find the LU decomposition of this simple m ...

  9. PHP之类型转化

    类型转化的判别 PHP在变量定义中不需要(或者不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的, 也就是说,如果把一个string值付给变量$var,$var就成了一个string,如 ...

  10. [administrator] rpmbuild

    rpmbuild 1.  rpm是什么 RPM = RPM Package Manager = Redhat Package Manager https://en.wikipedia.org/wiki ...