`

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静态初始化块和对象初始化块

    NULL 博文链接:https://yuu1987.iteye.com/blog/1113142

    【Java语言基础】初始化块

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

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

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

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

    主要介绍了Java中初始化块详解及实例代码的相关资料,在Java中,有两种初始化块:静态初始化块和非静态初始化块,需要的朋友可以参考下

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

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

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

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

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

    我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:

    java类中元素初始化顺序详解

    对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器

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

    java类中静态域、块,非静态域、块,构造函数的初始化顺序,通过本例子,能够清楚了解到java类的初始化顺序

    详解Java中的实例初始化块(IIB)

    在本篇文章里我们针对Java中的实例初始化块(IIB)做想详细分析,有需要的朋友们可以跟着学习参考下。

    Java类初始化顺序

    所有代码块是从上往下顺序执行的,所以代码块里面使用到的变量如果在块下面初始化会有问题 执行构造方法中内容。 所以看见的空构造方法,只能说第三部没有需要执行的内容。 下面举例子 public class TestClass { ...

    JAVA程序设计实验

    (2) 定义一个Student类,其中包括学号、姓名、性别、出生年月等属性以及init( )——初始化各属性、display( )——显示各属性、modify( )¬——修改姓名等方法。实现并测试这个类。 (3) 从上题的Student类中派...

    Java初始化顺序

    1 无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println(Sample默认构造函数被调用); } } class Test{ static Sample sam=new...

    JAVA面试题解惑系列

    我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:

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

    主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java类中各成员初始化的顺序

    了解java中类各个成员的初始化顺序是非常重要的,这样你可以对类有全局的认识。不说太多,直接看下面的例子 class Father { static{ System. out.println("父类静态代码块初始化" ); } { System. out.println...

    java对象初始化顺序验证示例

    以下这段小程序对调用对象构造函数时,父类构造函数、成员变量初始化函数,以及非静态初始化块调用顺序进行验证,不考虑静态成员及静态初始化块

Global site tag (gtag.js) - Google Analytics