我想了解

this example from Thinking in Java:

package c07;

import com.bruceeckel.simpletest.*;

class Meal {

Meal() { System.out.println("Meal()"); }

}

class Bread {

Bread() { System.out.println("Bread()"); }

}

class Cheese {

Cheese() { System.out.println("Cheese()"); }

}

class Lettuce {

Lettuce() { System.out.println("Lettuce()"); }

}

class Lunch extends Meal {

Lunch() { System.out.println("Lunch()"); }

}

class PortableLunch extends Lunch {

PortableLunch() { System.out.println("PortableLunch()");}

}

public class Sandwich extends PortableLunch {

private static Test monitor = new Test();

private Bread b = new Bread();

private Cheese c = new Cheese();

private Lettuce l = new Lettuce();

public Sandwich() {

System.out.println("Sandwich()");

}

public static void main(String[] args) {

new Sandwich();

monitor.expect(new String[] {

"Meal()",

"Lunch()",

"PortableLunch()",

"Bread()",

"Cheese()",

"Lettuce()",

"Sandwich()"

});

}

}

据我所知,从Java语言规范,执行顺序从加载包含main方法的类开始.然后必须初始化此类的所有静态和成员变量(在此之前必须初始化超类的所有成员变量,尽管在这种情况下没有这些变量).

所以我认为b,c,l会在主要开始执行之前被初始化.但是,输出似乎并非如此.我错过了什么吗?

java中的执行顺序_Java中的执行顺序相关推荐

  1. java对于数组的定义_Java中方法的定义与使用,以及对数组的初步了解。

    方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能--通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...

  2. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  3. java 类的执行顺序_Java中类的执行顺序

    讲解在代码中: package 类执行顺序; /** * java类执行顺序 * * 1.如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 * 2.如果类有静态成员赋值或者静态初 ...

  4. Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O

    I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...

  5. c if语句多个条件判断顺序_Java中的流程控制语句 (基础篇四)

    流程控制就是对事物次序的布置和安排,在程序中就是对代码执行次序的安排和控制 程序中的流程控制主要有三种:顺序流程.选择流程.循环流程. 顺序流程:比如打印输出的代码按照指定的顺序结构依次排序,打印的结 ...

  6. java中怎样创建线程_java中的线程创建和使用

    Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口.Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合 ...

  7. java内存堆和栈_java中堆,栈主要区别及内存存储

    java堆.栈.堆栈的区别 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度 ...

  8. java set 的使用方法_Java中Set的使用(转载)

    在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中.主要应用在显示列表.Set是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e ...

  9. java常见的报错_Java中常见的错误有哪些?

    原标题:Java中常见的错误有哪些? 1.java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 原因: 1.对系统所访 ...

  10. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

最新文章

  1. 博士因高校“虚假招聘”待遇不符辞职,却反被索要138万违约金,这是什么操作?...
  2. surf三维画图[matlab]
  3. iOS Swift JSON解析教程
  4. ScrewTurn Wiki 初识
  5. UITableView局部刷新
  6. leetcode刷题日记- 超级次方
  7. 中颐软启动器说明书_中颐软启动器维修
  8. Lottie动画的优劣及原理
  9. 树状数组(Binary Indexed Tree),看这一篇就够了
  10. 【华为机试真题Python】工厂流水线调度
  11. iVMS-4200 Vs区别_高中和大学的这些区别虽鲜为人知,却字字有据,句句真实
  12. dll修复工具下载,dll修复工具注意事项
  13. Endnote无法正确识别引文
  14. 概率论与统计学的关系是什么?
  15. 汽车保养知识知多少?这篇文章让你秒懂
  16. 编辑距离算法之Jaro-Winkler Distance
  17. MakerDAO中国区负责人 潘超:在加密世界研究经济学
  18. 美国FBA海运专线有哪些优势?
  19. iMX6平台MAX9288调试
  20. c#.net中的frame

热门文章

  1. 使用5502自带的UART口发送数据乱码的问题
  2. 修改win10注册表来控制cpu的最大运行频率,实现电脑降温
  3. matplotlib库使用
  4. ubuntu终止terminal中下载任务以及继续下载
  5. 机器学习项目中使用统计学方法的十个例子
  6. 工作流调度器azkaban 安装
  7. 梦幻之旅--深入大规模芯片设计全过程
  8. 使用java6做webservice 的客户端
  9. INSERT … ON DUPLICATE KEY UPDATE
  10. java web中的相对路径和绝对路径