`

java 初始化块

阅读更多

在Java中,有两种初始化块:静态初始化块和非静态初始化块.

静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量,即static修饰的数据成员.
非静态初始化块:在每个对象生成时都会被执行一次,可以初始化类的实例变量.

非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被运行.


 1 package com.tiandinet.studyjava;
 2 
 
 3 public class
 TestInitiateBlock {
 4 
 
 5 
    {
 6         System.out.println("In non-static initialization block!"
);
 7 
    };
 8 
 
 9     static
 {
10         System.out.println("In static initialization block!"
);
11 
    };
12 
 
13     public
 TestInitiateBlock() {
14         System.out.println("In Constructor1!"
);
15 
    }
16 
 
17     public void
 show() {
18         System.out.println("In show()!"
);
19 
    }
20 
 
21     /**

22      * @param args
23      */

24     public static void main(String[] args) {
25         TestInitiateBlock ti = new
 TestInitiateBlock();
26 
        ti.show();
27 
    }
28 
 
29 }

运行结果:
In static initialization block!
In non-static initialization block!
In Constructor1!
In show()!
分享到:
评论
2 楼 liuyuru 2011-03-04  
 
1 楼 JSE2010 2011-02-28  
想补充一下:非静态初始化块也可以初始化类成员,另外初始化块也可以看成匿名方法,可以访问成员变量和方法,规则和初始化成员类似。
以下是我测试的例子:


public class StaticField {
                         
static int  a,c;
int b,d;
public void put(){
System.out.println("非静态方法");
}
        public static void send(){
            System.out.println("静态方法"); 
        }
{
  a=4;
  b=5;
}
        static{
          c=6;
          d=7;
        }
{      
                System.out.println("这是非静态初始化块产生的结果:");
System.out.println(a);
System.out.println(b);
put();
                send();
}
static{
                System.out.println("这是静态初始化块产生的结果:");
System.out.println(c);
//System.out.println(d);/*编译报错*?
                //put();
                send();

}
public static void staticMehtod(){

public static void main(String[] args) {
               
        new StaticField();
      
    }

}
运行后输出的结果:

这是静态初始化块产生的结果:
6
静态方法


这是非静态初始化块产生的结果:
4
5
实例方法
静态方法

本人菜鸟,初学java,若有错误,请指正!

相关推荐

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

    总结起来,Java初始化块是Java中用于对象和类初始化的重要工具,它们在不同场景下提供了一种灵活的方式来控制对象和类的状态。理解初始化块的工作原理对于编写高效且无错误的Java代码至关重要。在编写代码时,应谨慎...

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

    在Java编程语言中,初始化块是程序执行时用于初始化对象或类的重要机制。这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种...

    Java初始化块及执行过程解析

    "Java初始化块及执行过程解析" Java 初始化块是 Java 语言中的一种特殊语法结构,用于对 Java 对象进行初始化操作。初始化块可以分为两种:静态初始化块和普通初始化块。静态初始化块用于对类进行初始化,而普通...

    java 初始化与方法

    静态初始化块用于在类加载时执行一次的初始化操作,而实例初始化块则在每次创建新对象时执行。这两个块可以用来设置默认值、初始化复杂对象或者执行其他必要的配置。 接下来,我们讨论Java方法。方法是代码的复用...

    Java中初始化块详解及实例代码

    "Java初始化块详解及实例代码" Java中初始化块是Java语言中的一种特殊的代码块,它可以在类加载或对象创建时执行某些操作。本文将详细介绍Java中初始化块的概念、种类、特点和应用场景。 什么是初始化块 初始化块...

    【Java语言基础】初始化块

    文章目录【Java语言基础】初始化块使用初始化块静态初始化块总结代码 【Java语言基础】初始化块 初始化块又称为代码块。属于类中的第四大成员。本质上是一个方法,它也有方法体,但没有方法名,没有参数,没有返回,...

    java代码的初始化顺序demo

    总之,Java代码的初始化顺序是类加载的必然过程,涉及到静态和实例初始化块、构造函数、成员变量初始化以及继承关系的影响。这个demo是学习和理解这些概念的重要工具,通过实际操作可以加深对Java内存管理和对象生命...

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

    类--初始化块"); 39. } 40. // 构造器 41. public SubClass() { 42. System.out.println("子类--构造器"); 43. } 44. 45. public static void main(String[] args) { 46. new SubClass(); 47. } 48.} 当我们运行这段...

    java程序初始化顺序

    - 静态初始化块(static{}):如果类中存在静态初始化块,该块的代码会在类加载后的准备阶段执行,用于初始化静态变量或执行其他静态设置任务。 - 静态变量的赋值:接着,静态变量会被赋予它们的初始值,这可以是...

    java中类的初始化顺序

    类的初始化涉及到多个方面,包括静态成员变量、实例成员变量、静态初始化块、实例初始化块以及构造函数等。本文将详细探讨Java中类的初始化过程及其顺序,并通过具体的代码示例来帮助理解这一过程。 #### 二、基础...

    java初级视频教程系列之-java初始化

    "Java初级视频教程系列之-java初始化"是一套专为初学者设计的教育内容,由经验丰富的IT专家精心录制,旨在帮助学习者掌握Java编程的基础,特别是关于对象初始化的重要概念。 在Java中,初始化是一个关键的步骤,它...

    Java类继承初始化顺序

    总之,Java类继承初始化顺序涉及到静态和非静态初始化块、构造器的调用以及方法的覆盖。理解这些概念对于编写健壮的、易于维护的Java代码至关重要。在实际编程中,应合理利用继承特性,同时注意避免不必要的复杂性和...

    深入Java初始化.pdf

    在Java中,类的初始化过程涉及到静态变量的赋值、静态初始化块的执行等。`<clinit>`方法就是JVM在类加载时用于执行这些初始化操作的特殊方法。它在类被首次加载时调用,且只调用一次。在上述代码示例中,`debug....

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

    - **非静态块(实例初始化块)**:在每次创建类的新实例时执行的代码块,用于初始化非静态域。 - **构造函数**:用于初始化新创建的对象的方法。 #### 二、初始化顺序 按照 Java 的规定,以下列出了类初始化的基本...

    Java变量初始化

    Java 变量初始化详解 Java 变量初始化是 Java 语言的基础知识点之一,但也往往被学习者所忽略。 Java 变量初始化的时机是指在 Java 语言中变量的初始化过程,包括变量的声明、初始化和赋值的步骤。 Java 变量声明 ...

    java初始化和清理

    Java初始化和清理是Java语言中非常重要的两个过程,它们确保了Java程序的正确运行和资源的有效管理。Java的初始化包括类的加载、连接和初始化三个过程,而清理则主要指垃圾回收机制。 首先,Java初始化的主要特性...

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

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

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

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

    在这个Java示例中,`a` 的值首先被声明时的初始值1设置,然后在静态初始化块中被改为2。`b` 的值在编译时就被确定为3。`c` 的值在实例初始化块中被设置为4,最后在构造器中被覆盖为5。 理解这两种语言中初始化顺序...

Global site tag (gtag.js) - Google Analytics