Java 初始化字段方式和顺序:
-
类加载时直接初始化静态字段;
-
类加载时调用静态方法初始化静态字段;
-
实例化对象时,在调用构造函数之前代码块中初始化字段;
-
实例化对象时,在调用构造函数之时初始化字段;
初始化字段顺序1->2->3->4
代码如下:
public class Employee {
//实例化对象时,在调用构造函数之前前初始化字段;
private int id; // 实例化对象时初始化为0
private String name; // 实例化对象时初始化为null
private boolean flag; // 实例化对象时初始化为false
private static int age = 22; // 加载类时初始化为22
// 在构造函数之前初始化
{
int num = 1111; // 实例化对象时初始化为1111
String name = "QA";// 实例化对象时初始化为QA
setId(num); // 实例化对象时调用
SetName(name); // 实例化对象时调用
System.out.println("call instance method");
}
//类加载时调用静态方法初始化静态字段;
static {
System.out.println("age is: " + age);
age = 30; // 加载类时初始化为33
print(); // 加载类时时调用
}
public void SetName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public static int getAge() {
return age;
}
public void setId(int num) {
id = num;
}
public static void print() {
System.out.println("call static method");
}
public Employee() {
// TODO Auto-generated constructor stub
}
public Employee(int id, String name) {
// TODO Auto-generated constructor stub
this.id = id;
this.name = name;
System.out.println("call constructor method");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("---------------------------");
System.out.println("age is: " + Employee.getAge());
System.out.println("---------------------------");
Employee e = new Employee();
System.out.println("id is: " + e.getId());
System.out.println("name is: " + e.getName());
System.out.println("---------------------------");
Employee e2 = new Employee(2222, "Dev");
System.out.println("id is: " + e2.getId());
System.out.println("name is: " + e2.getName());
}
}
运行结果:
age is: 22
call static method
---------------------------
age is: 30
---------------------------
call instance method
id is: 1111
name is: QA
---------------------------
call instance method
call constructor method
id is: 2222
name is: Dev
分享到:
相关推荐
在Java编程语言中,程序初始化的顺序是一个关键概念,它涉及到类加载、对象创建以及执行流程的安排。了解这些顺序对于编写高效、无错误的代码至关重要。以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**...
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
1. 基本类型的静态字段和引用类型的静态字段(如果它们是常量,即final且已初始化):这些字段在类加载时按声明顺序初始化。 2. 静态初始化块:当类第一次被加载时执行,按块的顺序执行。 3. 实例字段:在构造器内部...
静态初始化块和对象初始化块的执行顺序不同。静态初始化块在类加载时执行,而对象初始化块在创建新对象时执行。它们可以相互配合,以实现更复杂的初始化逻辑。例如,静态初始化块可以用来设置全局配置,而对象初始化...
这种情况下,初始化顺序如下:首先,`Lower`类的实例创建并分配默认值,然后调用`Upper`的构造器,接着执行`Initializer.initialize()`,该方法根据对象的实际类型(`Lower`)来设置字段的值。 5. **默认值**:即使...
在Java编程语言中,类的初始化是一个至关重要的过程,它涉及到类加载、静态初始化和实例化等多个阶段。本文将深入探讨这些步骤,并通过一个具体的示例来解释它们之间的顺序。 首先,我们来看类的装载顺序。Java...
至于文件`任务安排表.xls`,虽然与Java类的运行顺序直接关系不大,但可以想象在实际项目中,它可能被用来规划和跟踪类的加载和初始化过程,或者记录类之间的依赖关系。例如,通过Excel表格,我们可以列出各个类的...
这就是为什么 Java 的属性字段无需显示初始化就能被使用,而方法的局部变量却必须要显示初始化以后才能访问。 然后调用的对象的构造函数,调用过程会一直上溯到 Object 类。对象的组成部分包括对象头、实例数据和...
- 按照代码中出现的顺序初始化所有静态变量和静态代码块。 - 在类的静态成员初始化完成之后,才会执行类的非静态成员初始化。 - 最后执行类的构造函数来创建对象。 3. **静态与非静态初始化的区别**: - 静态...
我们将从类加载、实例初始化、静态初始化以及字节码指令等方面进行详细讲解,帮助开发者更好地理解和优化Java代码。 首先,我们来谈谈类加载过程。在Java中,当类被首次引用时,JVM会通过类加载器将其加载到内存中...
Java字段初始化的顺序是:构造函数->初始化块->成员变量的默认值。这意味着,在创建对象时,首先执行构造函数,然后执行初始化块,最后是成员变量的默认值。例如,在上面的测试代码中,我们首先执行构造函数`public ...
tr); fatherStr = "fatherStr...总之,Java对象初始化顺序是编程过程中必须掌握的基础知识,它涉及到类的加载、实例化过程以及字段和方法的调用顺序。正确理解和运用这些知识,能够使我们写出更加健壮、高效的代码。
Java类初始化和实例化是程序开发中至关重要的环节,它涉及到类加载、静态变量的初始化以及构造器的执行。在Java中,类的初始化通常在以下几个情况发生: 1. 使用`new`关键字创建实例。 2. 访问或修改类的静态字段...
总结来说,Java类的执行顺序涉及到类加载、验证、准备和初始化四个关键步骤,这些步骤在JVM内部协同工作,确保代码的正确性和安全性。理解这些基础知识对于编写高效、可靠的Java程序至关重要,也是面试中常见的技术...
总结,这个压缩包文件提供了关于Java中类和对象初始化的实例,包括静态和非静态成员的处理、继承、构造函数的调用顺序等。通过分析并运行这些代码,开发者可以更深入地理解Java的初始化机制。对于初学者来说,这是一...
总的来说,Java对象初始化是一个多步骤的过程,涉及默认值、显式赋值、构造器、初始化块以及继承关系下的初始化顺序。理解这些概念对于编写健壮的Java代码至关重要,能够帮助避免因不当初始化导致的错误。
Java的类加载过程分为三个主要阶段:加载、验证、准备、解析和初始化。当一个类被首次引用时(例如通过new关键字创建对象,或者调用静态方法),JVM会启动类加载过程。 2. 加载 在加载阶段,JVM寻找对应的.class...
在Java编程语言中,对象初始化顺序是一个重要的概念,它涉及到类和对象的生命周期。通过字节码分析,我们可以深入理解这个过程。字节码是Java虚拟机(JVM)理解和执行的二进制代码,它是Java源代码经过编译后的产物...
4. 成员字段初始化:所有基本类型(Primitive)设为它们的默认值(0 用于数字,以及 boolean 和 char 的等价设定)。 5. 实例变量初始化:一共有三种方式对实例变量进行初始化:①定义实例变量时指定初始值②非静态...
JVM执行类的静态初始化语句,包括静态变量的显式初始化和静态代码块的执行。一旦初始化完成,类就被认为是"初始化完成"。 6. **使用(Using)**:当类的实例被创建,或者静态方法、静态字段被调用时,类就进入了...