`
Eros_李
  • 浏览: 7239 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

static 使用之静态初始化块

    博客分类:
  • Java
阅读更多

Java 中可以通过初始化块进行数据赋值。

 

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

  • 注意静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量
  • 代码:

 

public class HelloWorld {
    
    String name; // 声明变量name
	String sex; // 声明变量sex
	static int age;// 声明静态变量age
    
    // 构造方法
	public HelloWorld() { 
		System.out.println("通过构造方法初始化name");
		name = "tom";
	}
    
    // 初始化块
	{ 
		System.out.println("通过初始化块初始化sex");
		sex = "男";
	}
    
    // 静态初始化块
	static{ 
		System.out.println("通过静态初始化块初始化age");
		age = 20;
	}
    
	public void show() {
		System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
	}
    
	public static void main(String[] args) {
        
        // 创建对象
		HelloWorld hello = new HelloWorld();
		// 调用对象的show方法
        hello.show();
        HelloWorld hello2 = new HelloWorld();
	}
}

 

  • 结果:

    通过静态初始化块初始化age
    通过初始化块初始化sex
    通过构造方法初始化name
    姓名:tom,性别:男,年龄:20
    通过初始化块初始化sex
    通过构造方法初始化name
  • 结论:通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
分享到:
评论

相关推荐

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

    这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种初始化块在创建类实例或加载类时分别扮演着不同的角色。 **静态初始化块**...

    Java static静态初始快

    在提供的文件"9.static静态初始化快"中,可能包含了关于如何定义和使用静态初始化块的示例代码,这将帮助初学者更好地理解这个概念。通过查看和分析这些代码,你可以进一步了解静态初始化块的实际应用和效果。学习这...

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

    根据是否带有 `static` 关键字,初始化块分为两种类型:普通初始化块(非静态初始化块)和静态初始化块。 1. 普通初始化块(非静态初始化块) 普通初始化块在创建对象时会被隐式调用,并且在执行构造器之前运行。...

    Java中的Static块与静态方法

    静态块,也被称为静态初始化器,是在类加载时自动执行的一段代码,用于初始化类的静态变量或执行一次性的设置工作。静态块可以包含任意的Java语句,并且会在类的任何实例被创建之前执行。与静态方法不同,静态块不是...

    类的static,const,static const,const static成员的初始化

    * 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。 3. 类里的 static const 和 const static 成员初始化 在学习 static 成员初始化时,我们发现了网上有很多关于 ...

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

    System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println(...

    Java中的静态块初始化块及main方法.doc

    Java编程语言中,静态块(static block)和初始化块(instance initialization block)是两种特殊的代码块,它们在程序运行的不同阶段被执行,对于类和对象的初始化有着重要作用。同时,`main`方法是Java程序的入口...

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

    ### Java 类中静态域、块,非静态域、块,构造函数的初始化顺序 #### 一、概述 在 Java 编程语言中,类的初始化顺序对于理解程序的行为至关重要。特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块...

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

    1. 首先,执行父类的静态初始化块,打印出 "父类--静态变量" 和 "父类--静态初始化块"。 2. 接着,执行子类的静态初始化块,打印出 "子类--静态变量" 和 "子类--静态初始化块"。 3. 然后,创建子类实例,首先执行...

    Java中static静态变量的初始化完全解析

    Java中的静态变量(static变量)是在类加载时初始化的,而不是在对象创建时。静态变量属于类,而不属于任何特定的对象,因此它们是共享的,所有类实例都可以访问。了解静态变量的初始化顺序对于理解和避免潜在的编程...

    对象初始化流程梳理对象初始化流程梳理

    Java中的对象初始化流程是编程实践中一个非常重要的概念,它涉及到类加载、静态初始化块、实例初始化块、构造器等多个方面。下面将详细解释这个过程。 首先,对象初始化流程的起点是程序的入口点,即`main`方法。当...

    java中类的初始化顺序

    3. **静态初始化块(Static Initialization Blocks)**:在类加载时执行,仅执行一次。 4. **实例初始化块(Instance Initialization Blocks)**:在每个对象创建时执行。 5. **构造方法(Constructors)**:用于...

    简单了解java中静态初始化块的执行顺序

    Java中静态初始化块的执行顺序 Java是一种面向对象的编程语言,静态初始化块是Java中的一个重要...通过本文的介绍,希望大家能够更好地理解Java中静态初始化块的执行顺序,并能够在实际开发中正确地使用静态初始化块。

    Java 中的 static 使用之静态方法.pdf

    静态初始化块(static initializer block)是在类加载时执行的,它用于初始化类的静态变量。与构造方法不同,静态初始化块只执行一次。这与实例初始化块(instance initializer block)不同,后者在每次创建类的实例...

    Java 中的 static 使用之静态方法.docx

    - 静态初始化块是在类加载时执行的,且只执行一次,主要用于初始化类的静态变量。 - 静态初始化块不能用来初始化非静态成员,因为它的执行早于类的实例创建。 3. **封装**: - 封装是面向对象编程的三大特性之一...

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

    静态初始化通过`static`关键字标记,可以用于声明静态变量、静态方法或静态代码块。 #### 二、静态初始化的过程 1. **静态初始化的时机**: - 当类首次被加载到JVM中时。 - 当第一次访问该类的静态成员(字段或...

    java学习之神奇初始化

    3. **静态初始化块与非静态初始化块的区别** #### 1. 静态成员的初始化 在Java中,静态成员(包括静态变量和静态方法)在任何类的实例创建之前都会被初始化。这意味着无论是否创建了该类的对象,静态成员都将在...

    JAVA类的初始化顺序文.pdf

    子类 --静态初始化块 "); 34. } 35. 36. // 初始化块 37. { 38. System.out.println(s_Field); 39. System.out.println(" 子类 --初始化块 "); 40. } 41. 42. // 构造器 43. public SubClass() { 44. System.out....

    C++全局变量初始化的一点总结

    首先,全局变量的初始化分为两个阶段:静态初始化(static initialization)和动态初始化(dynamic initialization)。静态初始化发生在程序加载时,主要针对那些可以用常量表达的初始化,例如零初始化(zero ...

Global site tag (gtag.js) - Google Analytics