`
chenfengcn
  • 浏览: 118416 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

类中成员的装载顺序你知道多少?

阅读更多
  最近去参加了SCJP培训,相信对于绝大多数的JAVA工作者来说,SCJP所培训的知识应该是很基础的了。不过正所谓温故而知新嘛,其实通过这样的一次培训,还是能了解到不少新知识的。就像下面这个最简单的例子,你能不做试验,直接写出结果吗?

Display.java 用于显示的类,没什么好看的
public class Display {
	public Display(String str) {
		System.out.println(str);
	}
}


Super.java 父类
public class Super {

	public static Display dis1 = new Display("父类静态区");
	
	public Display dis2 = new Display("父类变量声明");
	
	public Super() {
		Display dis4 = new Display("父类构造方法");
	}
	
	{
		Display dis3 = new Display("父类游离块");
	}
	
}


Sub.java 子类
public class Sub extends Super {

	public static Display dis5 = new Display("子类静态区");
	
	public Display dis6 = new Display("子类变量声明");
	
	public Sub() {
		Display dis8 = new Display("子类构造方法");
	}
	
	{
		Display dis7 = new Display("子类游离块");
	}
	
	public static void main(String[] args) {
		Sub sub = new Sub();
	}
}


  在试验代码之前,还真不知道这游离块是什么时候调用和做什么用的。
2
0
分享到:
评论
1 楼 cantellow 2009-04-02  
输出:
父类静态区
子类静态区
父类变量声明
父类游离块
父类构造方法
子类变量声明
子类游离块
子类构造方法

我是直接写出来的,不知道对不对
那个游离块其实就是变量声明,生成对象的时候根据他们声明的前后顺序不同初始化顺序也不同。比如如果:
{  
        Display dis3 = new Display("父类游离块");  
}
public Display dis2 = new Display("父类变量声明");  
那么输出的就是:
父类游离块
父类变量声明

相关推荐

    Java中对象初始化顺序的详细介绍

    在Java编程语言中,对象初始化是一个关键的概念,它涉及到类加载、对象实例化以及成员变量的赋值。本文将深入探讨Java中对象初始化的顺序,帮助开发者理解这一过程的细节。 首先,Java类的加载过程分为三个阶段:...

    ofbiz开发指南(2)

    **1.3 Classpath中的类装载顺序** 类装载器按照Classpath中条目的顺序来装载类。一旦找到第一个匹配的类,其余的条目将被忽略。这可能导致“隐藏”问题,其中较低优先级目录中的类被较高优先级目录中的同名类遮盖。...

    工地排矸立井装载机拆除安全技术措施.docx

    为了确保装载机拆除和运输工作的顺利进行,成立了专门的领导组,并明确了各成员的职责: - **组长**:张玉祥、杨群,负责总体指挥; - **副组长**:张海红、李文华,负责现场总指挥及安全生产工作; - **安监站**:...

    马士兵Java面试资料PDF(按章节顺序重新整理了一遍,顺序非视频中的顺序,但内容是全的)

    - 装载:ClassLoader通过类名找到`.class`文件,并在内存中创建Class对象。 - 链接:包括验证、准备和解析阶段,分配内存,设置初始值,转换符号引用。 - 初始化:执行类的静态初始化代码。 5. **Java类加载器**...

    Java面试资料PDF(按章节顺序重新整理了一遍,顺序非视频中的顺序,但内容是全的)

    - 装载:加载类文件到内存。 - 链接:解析类信息,包括分配内存、设置默认值和符号引用转换。 - 初始化:执行静态初始化代码块和构造器。 6. **Java类加载器**: - BootstrapClassLoader:加载核心库。 - ...

    Java中的static关键字

    Java 中的 static 关键字 ...在 Java 中,类装载器把一个类装入 Java 虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的。

    图文详解Java中class的初始化顺序

    首先,我们来看类的装载顺序。Java虚拟机(JVM)在运行时会使用类加载器来动态加载类。当类第一次被引用时(例如,创建类的实例,访问其静态字段或方法,或者通过子类引用父类),JVM就会开始装载这个类。装载过程中...

    旅游公司Java高级工程师岗位面试真题

    3. 初始化阶段:初始化静态变量和静态代码块,这是类加载的最后一步,确保类的静态成员按预期进行初始化。 类加载器的层级关系如下: - Bootstrap类加载器:加载JDK核心类库,例如rt.jar,它没有父类加载器。 - ...

    面试笔试真题(C++)-2017年牛客精华

    7. C++中的模板:模板是C++中的一个重要概念,类模板和模板类所指的是同一概念,模板的实参可以省略,但类模板中的成员函数不都是模板函数。 8. C++中的STL容器:STL中的一级容器包括vector、deque、list、set、...

    Java程序员面试题V1.2答案.doc

    SAX 是一种事件驱动型的 XML 解析方式,它顺序读取 XML 文件,不需要一次全部装载整个文件。STAX 是一种 Streaming API for XML,它可以实时地解析 XML 文件。 final 修饰符 final 是 Java 中的一个关键字,用于...

    集装箱装箱大师

    例如,它可以模拟不同的装载顺序,评估其对空间利用效率的影响;提供多种装载策略供用户选择,以应对不同的装载场景;支持生成装载报告,便于后期进行数据分析和存档。这些高级特性进一步提升了装箱大师在实际应用中...

    Java开发技术大全(500个源代码).

    invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...

    Java内部类的全限定名规律代码示例

    外部类名$由1开始的正整数`,这个数字是按照类装载顺序依次排列的。例如,`com.test.InnerClassTest$1`、`com.test.InnerClassTest$2`、`com.test.InnerClassTest$3`、`com.test.InnerClassTest$4` 和 `...

    java笔试题编成方面

    - 内部类是定义在另一个类中的类,它可以访问外部类的所有成员,包括私有成员。 - 主要有两种类型的内部类:静态内部类(Static Nested Class)和非静态内部类(Inner Class)。 - 示例: ```java public class...

    java代码与编程题.

    - **错误**:成员变量`d1`是外部类`OuterClass`的私有成员,无法在非静态内部类中直接访问外部类的非静态成员。 B. `public class InnerOne{ static double methoda(){return d1;}}` - **错误**:同样原因,`d1`是...

    超级有影响力霸气的Java面试题大全文档

    知道其行为的其它类可以在类中实现这些方法。  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以...

    LoadExpert 装柜专家

    只需输入货物信息,软件便会自动生成装柜布局,并提供详细的装载指南,包括每件货物的位置、方向以及顺序,大大降低了操作难度,提高了工作效率。 三、数据管理与报告 在装柜过程中,LoadExpert可以记录每批货物的...

    java考试题.pdf

    在访问控制修饰符中,protected(A)使得成员变量可以被自身和子类访问,public(B)使得所有类都能访问,private(C)只允许在本类中访问,不加修饰符(D)则表示包内可见。 File类是Java中用于文件和目录操作的类...

Global site tag (gtag.js) - Google Analytics