Java静态初始化,实例初始化以及构造方法复习~

转载 2012年03月22日 19:11:12

首先有三个概念需要了解:
一.静态初始化:是指执行静态初始化块里面的内容。
二.实例初始化:是指执行实例初始化块里面的内容。
三.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值。
对于这三个概念,给出以下程序,方便理解:

Java代码 复制代码 收藏代码
  1. class Book{     
  2.     public static int booksum=0;//静态变量     
  3.      
  4.     static{//这是静态初始化块     
  5.         print();     
  6.         System.out.println("this is static block");     
  7.     }     
  8.      
  9.     {//实例初始化块     
  10.         System.out.println(booksum);     
  11.     }     
  12.      
  13.     public Book(){//构造方法     
  14.         System.out.println("this is Book's constructor~");     
  15.         booksum+=1;     
  16.     }     
  17.      
  18.     public static void print(){//静态方法     
  19.         System.out.println("this is static method~");     
  20.     }     
  21. }    
 


我仅从代码执行的角度来探讨Java加载类、创建对象的过程,并没有深入到JVM的机制中去,因此不保证JVM是这样的一个过程,但我认为如果仅想对Java的代码执行过程有个了解,我下面的分析就足够了。
1.一个对象第一次被创建时,先要加载该对象所属的类,即对应的.class文件,当然如果类已经加载,再次创建该类的对象时,就不再需要重新加载类了。
而一个类加载的时候,有三个部分需要加载,一个是静态变量,再然后是静态方法,然后是静态初始化块。
2.然后开始创建该类的实例了,当然如果静态方法跟静态初始化对象中有对象的创建时,就继续加载该对象的类,当然已经加载了该对象的类的话就不需要再次加载了。那么对象实例的创建过程是什么呢?首先是成员变量的引入,然后是实例初始化块,之后才是构造方法,构造方法执行完成之后才算把这个对象给创建出来了。
在这个过程中,真正可以编写执行代码的地方有三个,静态初始化、实例初始化以及构造方法。从以上的分析中我们可以看到,这三个代码块的执行顺序是先类的静态初始化,再实例初始化,最后执行构造方法。也就是说,静态初始化是属于类加载的过程,所以它只执行一次,而实例初始化是每个对象创建时都会执行一次,而构造方法跟实例初始化其实也差不多,不过它在实例初始化之后执行,而且构造方法可以重载多个,执行哪个构造方法是根据你的选择来的。实例初始化据 Thinking in Java上说,对于匿名内部类的初始化来说是必须的。不过我还没看到那边,先了解一下,类的基本执行过程,做个总结,欢迎批评指正。

Java静态初始化,实例初始化以及构造方法

首先有三个概念需要了解: 一.静态初始化:是指执行静态初始化块里面的内容。 二.实例初始化:是指执行实例初始化块里面的内容。 三.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值。...

Java静态块(静态初始化,实例初始化和构造方法)总结

这篇文章总结来自于两篇博文: http://blog.csdn.net/clam_clam/article/details/6689998 http://hbiao68.iteye.com/bl...

静态变量(初始化块);实例变量(代码块);构造方法;

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

域初始化、静态块及构造方法等在创建类实例时的执行顺序

在《Core java 2: volumn 1, Edition 5》一书的第四章“对象与类”中讲到域赋值语句、实例块、静态块及构造方法等在创建类实例时的执行顺序,中文译本有些处翻译的不贴切,而英文原...

java静态代码块、初始化块和构造方法的执行顺序【转】

出处:http://blog.csdn.net/taowei20061122/archive/2010/05/27/5627337.asp 分析:当执行new Child()时,它首先去看父类里面有...

java静态代码块、初始化块和构造方法的执行顺序

分析:当执行new Child()时,它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容,当父类的静态代码块里面的内容执行完毕之后,接着去执行子类(自己这个类)里面的静...

Java靜態初始化與構造方法的執行順序

import static net.mindview.util.Print.*class Insect{private int i=9;protected int j;Insect(){print("...

java静态代码块、初始化块和构造方法的执行顺序

分析:当执行new Child()时,它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容,当父类的静态代码块里面的内容执行完毕之后,接着去执行子类(自己这个类)里面的静...

java中静态初始化块、初始化块和构造方法的理解

在Java中,有两种初始化块:静态初始化块和非静态初始化块。它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。 非静态初始化块(构造代码块): 作用:给对...

Java 构造方法,初始化块,静态初始化块

方法:就是跟C语言里的函数 差不多 构造方法:是Java类中,用来初始化对象的方法 我们使用new+构造方法,可以创建一个对象,此时,等号右边确定了。  其中,类是对象的类型 因此,等号左边也确定...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java静态初始化,实例初始化以及构造方法复习~
举报原因:
原因补充:

(最多只允许输入30个字)