黑马程序员技术交流社区
标题:
还是不太明白
[打印本页]
作者:
李方
时间:
2012-12-29 05:43
标题:
还是不太明白
看了那么多天视频,也反复看了那几天的视频,现在也有点不太明白构造函数,构造代码块,静态代码块的应用,求教高手能不能通俗的讲解一哈
作者:
刘丰伟
时间:
2012-12-29 09:42
构造函数的作用是给对象进行初始化,即在函数中建立对象,对象一建立,就会调用与之相对应的构造函数;当类中没有定义构造函数时,JVM会默认给该类加上一个空参数的构造函数;
构造代码块的作用是给该类的所有对象进行初始化,对象一建立,就运行,而且优先于构造函数运行
静态代码块,在不创建对象的情况下,只要类加载,这种代码是主动执行的是在项目启动的时候就初始化用的
作者:
郭冰川
时间:
2012-12-29 13:43
构造函数是给与之对应的对象初始化用的,新对象的创建是离不开它的,没有它无法创建对象,没写构造函数的话会默认有个空参数的构造函数。
构造代码块是给所有对象初始化用的,有对象了就会执行,优先于构造函数执行。
静态代码块是给类进行初始化用的,随着类的加载执行,并且只执行一次。
作者:
张会文
时间:
2012-12-29 20:39
本帖最后由 张会文 于 2012-12-29 20:52 编辑
这样说会不会简单一点
1、在使用一个类前,虚拟机需要从外部加载这个类文件,加载完毕后,有一部分代码会自动执行,包括静态代码块,创建对象时才会执行构造函数。
2、构造代码块:在构造函数的{}中出现的,作用是决定构造方法实现的功能。一个类中可以有重载的构造函数,也对应多个代码块,创建对象实例时用到哪个构造方法就调用哪个代码块,如果没有实例化对象,那么只有静态代码块被执行
3、静态代码块和类相关,因为在程序的一次运行过程中,类只会被加载一次,所以一个类的静态代码块也不会执行两次,这样就可以在外部改变静态代码块。
所以要想让代码一定在类加载的时候就运行,那么放在静态代码块中,
而在实例会对象的时候再运行就放在构造代码块中。
public class Test {
static{
System.out.println("静态代码被执行");
}
public Test() {
System.out.println("构造代码被执行");//不会被执行,除非实例化一个Test对象
}
public static void main(String[] args) {
}
}
作者:
冉世友
时间:
2012-12-29 21:26
看作用范围和作用时间:
作用时间
从先到后
:静态代码块(加载类时),构造代码块(创建对象时给所有成员变量初始化),构造函数(创建对象时根据需要初始化)
作用范围:
静态代码块:类一加载时就运行,相当于作用于整个类
构造代码块:可以给所有新创建的对象初始化
构造函数:对单个新对象根据需要初始化
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2