`

JAVA面试题解惑系列(一)——类的初始化顺序

阅读更多
removed.

请到博文下载PDF文件:http://zangweiren.iteye.com/blog/241218
105
9
分享到:
评论
6 楼 tatecn 2008-06-27  
引用
想问static是在new对象的时候初始化呢?还是classloader的时候初始化?初始化之后的值放在栈中呢还是放在堆中?调用对象的finalize方法的时候,static也会一起销毁吗?


首先是类的load,然后初始化类变量(static变量或者方法块);
只有在对象实例化时(instantiate)才会初始化相关的成员变量(如果需要的话)

调用对象的finalize方法的时候,static也会一起销毁吗?
这一部分不是很确定,期待别人来解答。
5 楼 臧圩人 2008-06-27  
回复:waitmannee

静态变量是在类第一次被加载(classloader)的时候初始化的,而非创建一个新对象(new对象)的时候。我们可以从下面的例子看出这一点:
public class StaticTest {
	// 静态变量
	public static StaticField sf = new StaticField();

	public StaticTest() {

	}

	public static void main(String[] args) {
		new StaticTest();
		new StaticTest();
	}
}

class StaticField {
	public StaticField() {
		System.out.println("初始化--静态变量");
	}
}

虽然我们在main方法里创建了两个StaticTest对象,但是如果我们运行上面的代码,只会得到一行输出,结果如下:

初始化--静态变量

静态变量是属于类的,而不是类的实例(对象),因此调用对象的finalize方法时,它并不会被销毁。

至于静态变量变量被初始化后值的存放位置则取决于它的类型。栈中主要存放一些基本类型的变量(int, short, long, byte, float, double, boolean, char)和对象句柄。而对象则保存在堆中。
4 楼 waitmannee 2008-06-27  
想问static是在new对象的时候初始化呢?还是classloader的时候初始化?初始化之后的值放在栈中呢还是放在堆中?调用对象的finalize方法的时候,static也会一起销毁吗?
3 楼 dingtao 2008-06-27  
的确不错 !  值得称赞
2 楼 global 2008-06-27  
总结的好啊,很多时候对于静态初始化和非静态初始的问题有的混淆!谢谢了!
1 楼 zl4393753 2008-06-26  
Clear Enough!!!

相关推荐

    JAVA面试题解惑系列——类的初始化顺序

    总结来说,对于Java面试中常出现的关于类初始化顺序的问题,开发者应当掌握以下几点: 1. 单个类内成员的初始化顺序:静态变量、静态初始化块、变量、初始化块、构造器。 2. 在继承关系中,子类的静态成员会在父类...

    JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    JAVA面试题解惑系列(一)——类的初始化顺序 JAVA 是一门面向对象的编程语言,类的初始化顺序是 JAVA 程序员和 JAVA 工程师面试中一个非常重要的知识点。本文将详细讲解类的初始化顺序,并提供了相关的测试代码,...

    臧圩人--JAVA面试题解惑系列合集.pdf

    **1.1 JAVA面试题解惑系列(一)——类的初始化顺序** - **知识点**:类的初始化顺序涉及静态变量、静态初始化块、实例变量、实例初始化块及构造器的执行顺序。在继承关系中,父类的初始化先于子类进行,且静态部分...

    JAVA面试题解惑系列合集

    1.1 JAVA面试题解惑系列(一)——类的初始化顺序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1.2 JAVA面试题解惑系列(二)——到底创建了几个String对象? . . . . . ....

    JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看.pdf

    "子类--构造器"); } public static void main(String[] args) { new SubClass(); } } 当我们运行这段代码时,会看到以下输出...所以,对于Java程序员和工程师来说,掌握类的初始化顺序是非常基础且重要的知识点。

    JAVA面试题解惑系列.doc

    《JAVA面试题解惑系列——类的初始化顺序》 在Java编程中,理解类的初始化顺序是面试中常见的考察点,因为它直接关系到程序的执行逻辑。本文将深入探讨类的初始化过程,以及在继承场景下如何理解这个过程。 首先,...

    经典JAVA面试题解惑系列合集

    JAVA面试题解惑系列(一)——类的初始化顺序 在Java编程语言中,理解类的初始化顺序是非常重要的,尤其是在涉及继承的情况下。本节将详细介绍类初始化的规则,并通过实例来帮助理解。 ##### 类的初始化顺序规则 ...

    JAVA面试题解惑系列.pdf

    ### Java面试题解惑系列——类的初始化顺序详解 #### 背景介绍 在Java面试过程中,关于类的初始化顺序的问题是常见的考察点之一。此类问题通常涉及到类的加载机制、静态变量与实例变量的区别、初始化块的作用及执行...

    ‘’JAVA面试题解惑系列.doc

    《JAVA面试题解惑系列——类的初始化顺序》 在Java面试中,关于类的初始化顺序是一个常见的考点。深入理解这一概念,对于成为一名合格的Java开发者至关重要。在Java中,类的初始化顺序遵循一定的规则,这包括静态...

    JAVA面试题解惑系列by(zangweiren)

    ### JAVA面试题解惑系列——类的初始化顺序 #### 一、基础知识回顾 在Java编程中,类的初始化顺序是一个非常重要的概念,特别是在面试时,它经常被用来考察面试者对于Java类加载机制的理解程度。类的初始化顺序...

    JAVA面试题解惑系列合集.docx

    ### JAVA面试题解惑系列知识点总结 #### 一、类的初始化顺序 **知识点概述:** 在Java中,类的初始化顺序是一个常见的面试问题。它主要涉及到类成员(包括静态和非静态)的加载和初始化过程。理解这些基础知识有助...

Global site tag (gtag.js) - Google Analytics