说明:包含main()方法的类中包含有static类,static类先初始化
class Bowl1 {
Bowl1(int marker) {
System.out.println("Bowl(" + marker + ")");
}
void f1(int marker) {
System.out.println("f1(" +marker + ")");
}
}
class Table1 {
static Bowl1 bow1 = new Bowl1(1);
Table1() {
System.out.println("Table1()");
bowl2.f1(1);
}
void f2(int marker) {
System.out.println("f2(" + marker + ")");
}
static Bowl1 bowl2 = new Bowl1(2);
}
class Cupboard1 {
Bowl1 bowl3 = new Bowl1(3);
static Bowl1 bowl4=new Bowl1(4);
Cupboard1() {
System.out.println("Cupboard1()");
bowl4.f1(2);
}
void f3(int marker) {
System.out.println("f3(" + marker + ")");
}
static Bowl1 bowl5 = new Bowl1(5);
}
public class StaticInitialzation {
public static void main(String[] args){
System.out.println("Creating new CupBoard1() in main");
new Cupboard1();
System.out.println("Creating new CupBoard1() in main");
new Cupboard1();
table.f2(1);
Cupboard.f3(1);
}
static Table1 table = new Table1();
static Cupboard1 Cupboard = new Cupboard1();
}
结果:
Bowl(1)
Bowl(2)
Table1()
f1(1)
Bowl(4)
Bowl(5)
Bowl(3)
Cupboard1()
f1(2)
Creating new CupBoard1() in main
Bowl(3)
Cupboard1()
f1(2)
Creating new CupBoard1() in main
Bowl(3)
Cupboard1()
f1(2)
f2(1)
f3(1)
class B1 {
void f(){
System.out.println(1);
}
}
class A1 {
static B1 b;
static {
b=new B1();
}
A1(){
System.out.print("a");
}
}
public class StaticInitialzation {
public static void main(String args[]) {
A1.b.f();
}
}
静态初始化只有在必要时刻才会进行(不是说会自动初始化所有类中的静态变量或者静态块):
1.当第一引用类中的static变量时,所有的static变量和static块都会被初始化,类本身不会初始化(A1没有初始化)
2.创建类(B1)
分享到:
相关推荐
本文将深入探讨结构的两种初始化方式:部分初始化和完全初始化,并通过实例分析其特点和注意事项。 首先,我们来看部分初始化。部分初始化是指在创建结构实例时只给一部分字段赋值,而其余字段保持默认状态。以下是...
在VB中,有多种方法可以初始化数组,本篇文章将深入探讨这些方法,并通过实例来说明。 ### 1. 静态初始化 静态初始化是在声明数组的同时为每个元素赋予特定的初始值。在VB中,可以使用以下语法: ```vb Dim 数组...
总之,Python的`__init__()`方法是初始化实例属性的关键。通过它,我们可以确保每个实例在创建时都有预定义的属性,并且还可以接受任意数量的额外属性,增强了类的灵活性。正确使用`self`参数并结合`**kwargs`关键字...
实例初始化块(非静态初始化块)在这个过程中执行,用于初始化实例变量。 4. **构造函数**: 构造函数是创建新对象时必须调用的方法,它负责设置对象的初始状态。`init`文件可能包含了各种构造函数的实现,展示...
本文以一个实例简单实现了类的创建与初始化,实现代码如下所示: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace C_program_test { class Person { public ...
ts-class-initializable 一个小助手,用于从纯对象启用类实例属性的初始化。 扩展一个Initializable类,您的类构造函数将接受一... // 'foobar'班级有几种口味: Initializable :构造函数需要一个普通对象来初始化实例
Java 中数组初始化实例详解 Java 中数组初始化是 Java 编程语言中的一种基本概念,它允许开发者创建和操作数组对象。在本文中,我们将深入探讨 Java 中数组初始化的概念,包括数组初始化的定义、可变参数列表的使用...
Struts2中实现web应用的初始化实例详解 在JavsSE中,main方法为应用提供了入口,而在Android中,我们可以使用Application对于整个应用的生命周期进行管理,那么在基于Struts2的JavaEE应用中,如何实现类似的功能呢。...
Java 变量初始化的时机可以分为两类:实例变量初始化和类变量初始化。 实例变量初始化 实例变量初始化可以在三个地方进行: 1. 定义实例变量的时候指定初始值; 2. 非静态初始化代码块中对实例变量指定初值; 3. ...
Java类的加载、连接和初始化实例分析 Java类的加载、连接和初始化是Java虚拟机(JVM)中的一些重要步骤,它们对Java类的生命周期产生了深远的影响。在本文中,我们将详细介绍Java类的加载、连接和初始化的原理和...
1. 接口描述 2. 输入参数 3. 输出参数 4. 错误码表 5. 示例
initState是Vue实例创建过程中最早被调用的方法之一,它负责初始化实例中的各种状态。这个函数主要做了几件事: 1. 定义实例的私有属性_watchers,它用于存储所有的显式监视器。 2. 获取实例的配置对象($options)...
3. 当创建对象时,JVM会调用`<init>`方法来初始化实例变量和实例初始化块。 4. 构造函数(如果有的话)在`<init>`方法中调用,用于完成特定对象的初始化。 JVM的初始化过程是高度内化的,程序员通常不需要直接操作...
4. **实例变量的显式初始化**:在构造器调用之前,会按照声明顺序初始化实例变量。 5. **构造器中的初始化**:构造器中定义的初始化逻辑。 6. **非静态初始化块**:位于类体中的非静态初始化块按照它们出现的顺序被...
- 在实例化过程中,按顺序初始化实例成员变量、实例成员函数,最后调用构造函数。 了解这个顺序对于理解和调试涉及多层继承和复杂初始化逻辑的Java代码至关重要。正确掌握这个顺序可以帮助我们避免因初始化顺序不当...
这部分代码通常在构造函数中,但其实Java字节码层面还有一个特殊的()方法,它负责初始化实例变量。不同于静态初始化,实例初始化只对特定的对象生效。 静态初始化则涉及到类级别的变量。在类加载的准备阶段,静态...
在Objective-C中,对象的初始化和实例变量的作用域是编程中的关键概念,对于理解和创建健壮的iOS和macOS应用程序至关重要。 首先,让我们深入理解对象的初始化过程。在Objective-C中,初始化通常涉及`init`方法。每...
在Java编程语言中,类和实例的初始化是程序运行中的重要环节,对于理解和优化代码的执行效率至关重要。这里我们将深入探讨这两个概念。 首先,我们来看类的初始化过程,也称为类加载与初始化。当Java虚拟机(JVM)...
4. 如果静态变量的赋值语句中包含实例变量的引用,则先初始化实例变量。 在上面的代码示例中,我们可以看到,Singleton 类中的静态变量 a 和 b 都是通过静态块来初始化的。在 Singleton 类的静态块中,我们首先对 a...