`
Ydoing
  • 浏览: 106099 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java 初始化字段方式和顺序

 
阅读更多

Java 初始化字段方式和顺序:

  1. 类加载时直接初始化静态字段;

  2. 类加载时调用静态方法初始化静态字段;

  3. 实例化对象时,在调用构造函数之前代码块中初始化字段;

  4. 实例化对象时,在调用构造函数之时初始化字段;

  初始化字段顺序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编程语言中,程序初始化的顺序是一个关键概念,它涉及到类加载、对象创建以及执行流程的安排。了解这些顺序对于编写高效、无错误的代码至关重要。以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

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

    1. 基本类型的静态字段和引用类型的静态字段(如果它们是常量,即final且已初始化):这些字段在类加载时按声明顺序初始化。 2. 静态初始化块:当类第一次被加载时执行,按块的顺序执行。 3. 实例字段:在构造器内部...

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

    静态初始化块和对象初始化块的执行顺序不同。静态初始化块在类加载时执行,而对象初始化块在创建新对象时执行。它们可以相互配合,以实现更复杂的初始化逻辑。例如,静态初始化块可以用来设置全局配置,而对象初始化...

    Java中对象初始化顺序的详细介绍

    这种情况下,初始化顺序如下:首先,`Lower`类的实例创建并分配默认值,然后调用`Upper`的构造器,接着执行`Initializer.initialize()`,该方法根据对象的实际类型(`Lower`)来设置字段的值。 5. **默认值**:即使...

    图文详解Java中class的初始化顺序

    在Java编程语言中,类的初始化是一个至关重要的过程,它涉及到类加载、静态初始化和实例化等多个阶段。本文将深入探讨这些步骤,并通过一个具体的示例来解释它们之间的顺序。 首先,我们来看类的装载顺序。Java...

    Java类的基本运行顺序

    至于文件`任务安排表.xls`,虽然与Java类的运行顺序直接关系不大,但可以想象在实际项目中,它可能被用来规划和跟踪类的加载和初始化过程,或者记录类之间的依赖关系。例如,通过Excel表格,我们可以列出各个类的...

    03.Java对象初始化1

    这就是为什么 Java 的属性字段无需显示初始化就能被使用,而方法的局部变量却必须要显示初始化以后才能访问。 然后调用的对象的构造函数,调用过程会一直上溯到 Object 类。对象的组成部分包括对象头、实例数据和...

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

    - 按照代码中出现的顺序初始化所有静态变量和静态代码块。 - 在类的静态成员初始化完成之后,才会执行类的非静态成员初始化。 - 最后执行类的构造函数来创建对象。 3. **静态与非静态初始化的区别**: - 静态...

    通过Java字节码发现有趣的内幕之初始化篇(下)Java开

    我们将从类加载、实例初始化、静态初始化以及字节码指令等方面进行详细讲解,帮助开发者更好地理解和优化Java代码。 首先,我们来谈谈类加载过程。在Java中,当类被首次引用时,JVM会通过类加载器将其加载到内存中...

    Java字段初始化的规律解析

    Java字段初始化的顺序是:构造函数->初始化块->成员变量的默认值。这意味着,在创建对象时,首先执行构造函数,然后执行初始化块,最后是成员变量的默认值。例如,在上面的测试代码中,我们首先执行构造函数`public ...

    Java——对象初始化顺序使用详解

    tr); fatherStr = "fatherStr...总之,Java对象初始化顺序是编程过程中必须掌握的基础知识,它涉及到类的加载、实例化过程以及字段和方法的调用顺序。正确理解和运用这些知识,能够使我们写出更加健壮、高效的代码。

    Java类初始化和实例化中的2个“雷区”

    Java类初始化和实例化是程序开发中至关重要的环节,它涉及到类加载、静态变量的初始化以及构造器的执行。在Java中,类的初始化通常在以下几个情况发生: 1. 使用`new`关键字创建实例。 2. 访问或修改类的静态字段...

    Java类执行顺序详解+实例(阿里面试题)+详细讲解+流程图

    总结来说,Java类的执行顺序涉及到类加载、验证、准备和初始化四个关键步骤,这些步骤在JVM内部协同工作,确保代码的正确性和安全性。理解这些基础知识对于编写高效、可靠的Java程序至关重要,也是面试中常见的技术...

    类和对象的初始化过程.zip

    总结,这个压缩包文件提供了关于Java中类和对象初始化的实例,包括静态和非静态成员的处理、继承、构造函数的调用顺序等。通过分析并运行这些代码,开发者可以更深入地理解Java的初始化机制。对于初学者来说,这是一...

    深入介绍Java对象初始化

    总的来说,Java对象初始化是一个多步骤的过程,涉及默认值、显式赋值、构造器、初始化块以及继承关系下的初始化顺序。理解这些概念对于编写健壮的Java代码至关重要,能够帮助避免因不当初始化导致的错误。

    java 继承关系的加载顺序

    Java的类加载过程分为三个主要阶段:加载、验证、准备、解析和初始化。当一个类被首次引用时(例如通过new关键字创建对象,或者调用静态方法),JVM会启动类加载过程。 2. 加载 在加载阶段,JVM寻找对应的.class...

    通过java字节码分析学习对象初始化顺序

    在Java编程语言中,对象初始化顺序是一个重要的概念,它涉及到类和对象的生命周期。通过字节码分析,我们可以深入理解这个过程。字节码是Java虚拟机(JVM)理解和执行的二进制代码,它是Java源代码经过编译后的产物...

    java对象初始化代码详解

    4. 成员字段初始化:所有基本类型(Primitive)设为它们的默认值(0 用于数字,以及 boolean 和 char 的等价设定)。 5. 实例变量初始化:一共有三种方式对实例变量进行初始化:①定义实例变量时指定初始值②非静态...

    Java类的基本运行顺序-Java教程共1页.pdf.zi

    JVM执行类的静态初始化语句,包括静态变量的显式初始化和静态代码块的执行。一旦初始化完成,类就被认为是"初始化完成"。 6. **使用(Using)**:当类的实例被创建,或者静态方法、静态字段被调用时,类就进入了...

Global site tag (gtag.js) - Google Analytics