`

变量定义的初始化顺序

阅读更多
//#java编程思想P94
//在类的内部, 定义变量的先后顺序决定了初始化的顺序。 即使变量定义分布于方法定义之间, 它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
package com.ztao2333.service;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;


class Window{
	Window(int maker){
		System.out.println("Window" + maker);
	}
}
class House{
	Window w1 = new Window(1);//Before 构造器
	House(){
		//构造器中
		System.out.println("House");
		w3 = new Window(33);//重新初始化  w3
	}
	
	Window w2 = new Window(2);  //After 构造器
	void f() {
		System.out.println("f");
	}
	Window w3 = new Window(3);//end
}
public class test {
	public static void main(String[] args) {
		House h = new House();
		h.f();
	}
}

/* Output
Window1
Window2
Window3
House
Window33
f
*/
分享到:
评论

相关推荐

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

    成员变量的初始化顺序非常重要。在一个类中,成员变量按照它们在类体中声明的顺序进行初始化。如果一个成员变量的初始化依赖于另一个成员变量的值,那么应该确保后者先被初始化。 #### 构造函数中的初始化块 除了...

    Java初始化顺序1

    Java 初始化顺序详解 在 Java 中,变量可以分为两类:类变量(静态变量)和实例变量(对象变量)。类变量是使用 static 关键字修饰的变量,它们属于类,而不是对象。实例变量则是没有使用 static 关键字修饰的变量...

    探究java的ClassLoader及类变量初始化顺序

    同时,掌握类变量初始化顺序可以避免因误解而导致的错误,特别是在多线程环境中,对静态变量的并发访问和初始化顺序的控制需要特别注意。 总之,深入理解Java的ClassLoader机制和类变量初始化顺序是提升Java编程...

    全局变量初始化导致的dll加载失败工程

    标题中的“全局变量初始化导致的dll加载失败工程”是一个典型的C++编程问题,涉及到动态链接库(DLL)的加载机制以及全局变量的初始化顺序。在C++编程中,全局变量的初始化顺序是一个需要深入理解的概念,尤其是在...

    类初始化顺序示例讲解

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

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

    首先,需要了解Java类初始化的基本规则,即在类的静态变量、静态初始化块、变量、初始化块、构造器这五个部分中,它们的初始化顺序依次是:静态变量、静态初始化块、变量、初始化块、构造器。这个顺序在单个类中是...

    Qt变量初始化,为何要与声明的次序保持一致?-CSDN论坛1

    在构造函数的成员初始化列表中,成员变量的初始化顺序并不是由它们在初始化列表中出现的顺序决定的,而是由它们在类定义中的声明顺序决定。这意味着,无论你在构造函数的初始化列表中如何排列这些成员,它们都将按照...

    java中类的初始化顺序

    3. **静态成员变量与实例成员变量的初始化顺序** ```java public class TestOrder { // 静态成员变量初始化 public static TestA a = new TestA(); // 静态初始化块 static { System.out.println("静态初始...

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

    静态变量的初始化顺序是按照它们在类中的定义顺序进行的。 在 Java 中有两种类型的变量:实例变量和静态变量。实例变量是在实例创建时被初始化的,而静态变量是在类加载时被初始化的。静态变量可以被所有实例共享,...

    c++能不能给类的成员变量在声明的时候初始化? - life_limbo - 博客园1

    成员变量的初始化顺序遵循以下规则: 1. **声明时初始化**:首先执行成员变量的声明时初始化,即在成员变量声明时直接赋值,如`int a = 1;`。 2. **初始化列表初始化**:接着执行构造函数的初始化列表,其中的初始...

    成员的初始化顺序和多态性

    在Java编程语言中,理解成员变量的初始化顺序对于正确地设计和实现类结构至关重要。通过本实验,我们将深入了解成员变量的初始化顺序,以及如何通过实际代码示例来验证这些概念。 #### 实验步骤解析 ##### 步骤一...

    Java变量初始化

    在这里并不是指将变量初始化为在变量定义处的初始值,对于基本类型变量,默认值为空值是 0 或 false,对于引用类型变量,默认空值为 null。这一切都是在构造函数执行之前,变量的真正初始化是在构造函数中执行。 ...

    Java类加载器:静态变量初始化.docx

    在这个阶段,类加载器会对类中的静态变量进行初始化,按照 Java 语言规范中定义的初始化顺序。 总结 ---------- 在本文中,我们讨论了 Java 类加载器中的静态变量初始化机制,了解了静态变量的初始化顺序和类加载...

    C++和Java初始化顺序的比较代码

    在C++中,初始化顺序遵循以下规则: 1. 静态成员变量:无论它们在哪里定义,静态成员变量都按照声明的顺序初始化。 2. 非静态数据成员:在构造函数初始化列表中,成员变量按照它们在类声明中的顺序被初始化。即使...

    浅谈Java变量的初始化顺序详解

    总结一下Java变量初始化顺序的要点: 1. **静态变量与静态初始化块**:首先按照在类中定义的顺序初始化所有静态变量和执行静态初始化块。这是在类被加载到内存时发生的,与对象创建无关。 2. **非静态变量与初始化...

    结构体变量的初始化和使用

    通过花括号 `{}` 内指定的值顺序与结构体成员一一对应,从而完成了结构体变量的初始化。 ### 使用结构体变量 一旦结构体变量被正确地初始化,就可以通过访问其成员来使用这些数据。在例子中,`cout` 语句被用来...

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

    Java语言中的类初始化顺序是面试中常见的问题,尤其对于Java程序员和工程师来说,理解这一概念至关重要。本篇文章将深入解析类初始化的顺序以及在继承情况下的表现。 首先,我们需要明确类初始化顺序的基本规则: ...

    java对象的初始化顺序[参考].pdf

    Java对象的初始化顺序是一个关键的编程概念,它涉及到类加载、静态初始化、实例初始化等多个步骤。下面我们将详细探讨这些步骤。 首先,当程序运行并创建一个新的对象时,JVM(Java虚拟机)会按照特定的顺序来初始...

    java类中静态域、块,非静态域、块,构造函数的初始化顺序

    特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块、非静态块以及构造函数时,明确它们的初始化顺序有助于避免潜在的编程错误。 根据题目提供的内容,我们将重点讨论这些概念以及它们之间的相互关系...

    深入理解final变量的初始化

    - **实例变量**:实例变量的初始化顺序与它们在类声明中的顺序一致,同时考虑初始化块。在`InitOrder`的例子中,`c1`的初始化块在`d1`之前,所以`c1`先被初始化。 5. **错误和限制**: - 当尝试在初始化块中引用...

Global site tag (gtag.js) - Google Analytics