Java静态初始化,实例初始化以及构造方法
2010-08-25 09:36
495 查看
首先有三个概念需要了解:
一.静态初始化:是指执行静态初始化块里面的内容。
二.实例初始化:是指执行实例初始化块里面的内容。
三.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值。
对于这三个概念,给出以下程序,方便理解:
Java代码
class Book{
public static int booksum=0;//静态变量
static{//这是静态初始化块
print();
System.out.println("this is static block");
}
{//实例初始化块
System.out.println(booksum);
}
public Book(){//构造方法
System.out.println("this is Book's constructor~");
booksum+=1;
}
public static void print(){//静态方法
System.out.println("this is static method~");
}
}
我仅从代码执行的角度来探讨Java加载类、创建对象的过程,并没有深入到JVM的机制中去,因此不保证JVM是这样的一个过程,但我认为如果仅想对Java的代码执行过程有个了解,我下面的分析就足够了。
1.一个对象第一次被创建时,先要加载该对象所属的类,即对应的.class文件,当然如果类已经加载,再次创建该类的对象时,就不再需要重新加载类了。
而一个类加载的时候,有三个部分需要加载,一个是静态变量,再然后是静态方法,然后是静态初始化块。
2.然后开始创建该类的实例了,当然如果静态方法跟静态初始化对象中有对象的创建时,就继续加载该对象的类,当然已经加载了该对象的类的话就不需要再次加 载了。那么对象实例的创建过程是什么呢?首先是成员变量的引入,然后是实例初始化块,之后才是构造方法,构造方法执行完成之后才算把这个对象给创建出来 了。
在这个过程中,真正可以编写执行代码的地方有三个,静态初始化、实例初始化以及构造方法。从以上的分析中我们可以看到,这三个代码块的执行顺序是先类的静 态初始化,再实例初始化,最后执行构造方法。也就是说,静态初始化是属于类加载的过程,所以它只执行一次,而实例初始化是每个对象创建时都会执行一次,而 构造方法跟实例初始化其实也差不多,不过它在实例初始化之后执行,而且构造方法可以重载多个,执行哪个构造方法是根据你的选择来的。实例初始化据 Thinking in Java上说,对于匿名内部类的初始化来说是必须的。不过我还没看到那边,先了解一下,类的基本执行过程,做个总结,欢迎批评指正。
一.静态初始化:是指执行静态初始化块里面的内容。
二.实例初始化:是指执行实例初始化块里面的内容。
三.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值。
对于这三个概念,给出以下程序,方便理解:
Java代码
class Book{
public static int booksum=0;//静态变量
static{//这是静态初始化块
print();
System.out.println("this is static block");
}
{//实例初始化块
System.out.println(booksum);
}
public Book(){//构造方法
System.out.println("this is Book's constructor~");
booksum+=1;
}
public static void print(){//静态方法
System.out.println("this is static method~");
}
}
我仅从代码执行的角度来探讨Java加载类、创建对象的过程,并没有深入到JVM的机制中去,因此不保证JVM是这样的一个过程,但我认为如果仅想对Java的代码执行过程有个了解,我下面的分析就足够了。
1.一个对象第一次被创建时,先要加载该对象所属的类,即对应的.class文件,当然如果类已经加载,再次创建该类的对象时,就不再需要重新加载类了。
而一个类加载的时候,有三个部分需要加载,一个是静态变量,再然后是静态方法,然后是静态初始化块。
2.然后开始创建该类的实例了,当然如果静态方法跟静态初始化对象中有对象的创建时,就继续加载该对象的类,当然已经加载了该对象的类的话就不需要再次加 载了。那么对象实例的创建过程是什么呢?首先是成员变量的引入,然后是实例初始化块,之后才是构造方法,构造方法执行完成之后才算把这个对象给创建出来 了。
在这个过程中,真正可以编写执行代码的地方有三个,静态初始化、实例初始化以及构造方法。从以上的分析中我们可以看到,这三个代码块的执行顺序是先类的静 态初始化,再实例初始化,最后执行构造方法。也就是说,静态初始化是属于类加载的过程,所以它只执行一次,而实例初始化是每个对象创建时都会执行一次,而 构造方法跟实例初始化其实也差不多,不过它在实例初始化之后执行,而且构造方法可以重载多个,执行哪个构造方法是根据你的选择来的。实例初始化据 Thinking in Java上说,对于匿名内部类的初始化来说是必须的。不过我还没看到那边,先了解一下,类的基本执行过程,做个总结,欢迎批评指正。
相关文章推荐
- Java静态初始化,实例初始化以及构造方法
- Java静态初始化,实例初始化以及构造方法
- Java静态初始化,实例初始化以及构造方法
- Java静态初始化,实例初始化以及构造方法
- Java静态初始化,实例初始化以及构造方法复习~
- Java静态初始化,非静态初始化以及构造方法
- Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)
- java中的方法,静态方法,实例方法,构造方法,自定义方法,以及修饰符访问
- java中 静态成员、实例成员、构造方法在子类和父类中的执行顺序
- Java中普通代码块、构造代码块、静态代码块区别以及代码实例
- 关于java代码中静态代码块、非静态构造代码块以及构造方法的执行顺序
- Java第11次作业:什么是继承?继承的好处?什么是覆写?super()?构造代码块?子父类初始化顺序? 抽象类能用final声明吗?final关键字声明类 方法 变量以及全局常量?抽象类的构造方法?
- java 静态代码块,实例代码块,构造方法的执行顺序
- JAVA静态代码块执行过程 以及和构造方法的区别
- Java中非静态代码块,静态代码块和构造方法的初始化顺序
- java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解
- java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解
- Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序
- Java初学者Paulmarkyes---中静态代码块,普通代码块,构造代码块,构造方法先后执行顺序以及区别
- java 继承时子类父类的静态非静态成员变量,构造方法,静态代码块的初始化顺序