`
slippy
  • 浏览: 33769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 类静态成员初始化问题

阅读更多
public class StaticVar {
	private static StaticVar sv = new StaticVar();
	public  static int i;
	public  static int j = 0;

	private StaticVar() {
		i ++;
		j ++;
	}
	
	public static StaticVar getInstance(){
		return sv;
	}

	public static void main(String[] args) {
		//StaticVar sv = StaticVar.getInstance();	
		System.out.println("i = " + i);
		System.out.println("j = " + j);
	}
}

使用javap -v 反编译后关于静态区的内容

static {};
  Code:
   Stack=2, Locals=0, Args_size=0
   0: new #14; //class StaticVar
   3: dup
   4: invokespecial #15; //Method "<init>":()V
   7: putstatic #4; //Field sv:LStaticVar;
   10: iconst_0
   11: putstatic #3; //Field j:I
   14: return
  LineNumberTable:
   line 2: 0
   line 4: 10
分享到:
评论

相关推荐

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

    Java静态初始化块和对象初始化块

    总之,理解并有效地使用静态和对象初始化块是Java开发中的关键技能,它们可以帮助我们更好地控制类和对象的初始化过程,确保代码的高效性和正确性。在实际编程中,我们应该根据需求谨慎选择合适的初始化策略,以优化...

    java中类的初始化顺序

    3. **父类静态成员变量及初始化块**:如果当前类继承自另一个类,则父类的静态成员变量和静态初始化块会在子类之前被初始化。 4. **实例成员变量的默认初始化**:创建对象时,默认情况下,实例成员变量会被初始化为...

    java数组初始化详解

    在 Java 中,数组的初始化可以分为静态初始化和动态初始化。 静态初始化是指在定义数组时同时初始化数组的值,例如:`int[] a = {1, 2, 3};`。 动态初始化是指在定义数组时不初始化数组的值,而是在后续的代码中...

    java笔记静态成员

    java语言中静态成员是指属于类的成员,而不是属于实例的成员。静态成员可以被所有实例共享,在程序中只有一份拷贝。静态成员包括静态变量、静态方法和静态初始化块。 1、静态变量 静态变量是指属于类的变量,它们...

    学习java静态数据初始化.doc

    - 在类的静态成员初始化完成之后,才会执行类的非静态成员初始化。 - 最后执行类的构造函数来创建对象。 3. **静态与非静态初始化的区别**: - 静态初始化发生在类被加载时,而非静态初始化则发生在每个对象被...

    java面试题-类的初始化顺序.doc

    这意味着静态成员和静态初始化块对于所有类的实例都是共享的,而实例成员和实例初始化块则是每个对象独有的。 在面试中,面试官可能会通过这种类型的题目来评估应聘者对Java内存模型的理解,以及他们在编写代码时...

    Java类继承初始化顺序

    静态初始化块用于初始化类级别的静态变量,它们只在类加载时执行一次。 2. **成员变量初始化**:接下来,初始化父类的非静态成员变量,这是通过调用父类的构造器实现的。Java规定每个子类实例在构造之前必须先调用...

    Java static静态初始快

    在Java编程语言中,`static`关键字扮演着重要的角色,特别是在初始化类的静态成员时。`static`静态初始化块是用来初始化类级别的变量,也就是说,这些变量是属于类本身,而不是类的实例。当我们讨论“Java static...

    Java静态和非静态成员变量初始化过程解析

    Java静态和非静态成员变量初始化过程解析 Java静态和非静态成员变量初始化过程解析是Java语言中一个非常重要的概念。了解Java静态和非静态成员变量的初始化过程对大家的学习或者工作具有一定的参考学习价值。 首先...

    类继承的初始化顺序类,继承的初始化顺序

    2. **子类静态成员初始化**:随后是子类中的静态成员初始化。 3. **基类非静态成员初始化**:当创建一个子类对象时,会首先调用基类的构造函数来初始化基类的非静态成员变量。 4. **子类非静态成员初始化**:接着是...

    java代码的初始化顺序demo

    它用于初始化类级别的静态变量。在`init`目录下的文件可能包含了不同静态初始化的示例。 3. **实例化阶段**: 当我们创建一个新的对象时,Java会进行实例初始化。首先,分配内存空间,然后调用构造函数。实例初始...

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

    只有在子类的静态成员初始化完成后,才开始父类的非静态成员和构造器的初始化,以及子类的构造器初始化。 这个顺序可能会导致一些有趣的现象,例如,在父类的构造器中使用某个还未初始化的子类静态成员变量(如果...

    实现易语言类静态数据成员的方法

    在C++或Java等其他面向对象的语言中,我们通常使用`static`关键字来声明静态成员,而在易语言中,也有类似的方式。 在易语言中,声明静态数据成员的语法如下: ```易语言 .静态变量名 类型 ``` 例如,如果我们要...

    java学习之神奇初始化

    - **静态初始化块**:仅在类加载时执行一次,用于初始化类中的静态成员。这类初始化块通常用来完成一次性的工作,如数据库连接或读取配置文件等。 - **非静态初始化块**:每次创建类的新实例时都会被执行,用于初始...

    深入java虚拟机(三)——类的生命周期(下)类的初始化1

    5. **初始化类的子类**。 6. **JVM启动时作为主类的类**。 例如,如果我们有一个`Singleton`类,其中包含静态变量和静态初始化代码块,如下所示: ```java class Singleton { private static Singleton singleton...

    Java关于含有继承类的成员初始化过程讲解

    Java关于含有继承类的成员初始化过程讲解 titre1:Java中的继承类成员初始化过程 在Java中,继承类的成员初始化过程是一个复杂且容易让人困惑的地方。今天,我们将通过一个具体的实例来讲解这个过程,以帮助读者...

    JAVA类的初始化顺序文.pdf

    总之,类的初始化顺序是:静态成员 -&gt; 静态初始化块 -&gt; 非静态成员 -&gt; 非静态初始化块 -&gt; 构造器。这个顺序同样适用于继承关系,只是会先初始化父类的部分,再初始化子类的部分。掌握这一知识能帮助程序员更好地设计...

    Java初始化块Java初始化块.doc

    静态初始化块主要用于初始化类级别的变量,即静态变量。由于它是在类加载时执行,所以它总是在任何对象创建之前运行。静态初始化块不能访问非静态成员,包括实例属性和实例方法,因为它们依赖于对象实例,而静态初始...

    类初始化顺序示例讲解

    本文将基于给定的Java示例代码深入探讨类初始化的顺序问题。这不仅是Java语言的关键特性之一,在其他面向对象语言(如C++、.NET)中也有相似的概念。理解这一概念有助于程序员更好地掌握面向对象程序的设计与实现。 ...

Global site tag (gtag.js) - Google Analytics