黑马程序员技术交流社区
标题:
有一个静态代码块的小问题
[打印本页]
作者:
丁强强
时间:
2013-2-24 13:16
标题:
有一个静态代码块的小问题
本帖最后由 丁强强 于 2013-2-25 05:27 编辑
class StaticCode
{
static
{
System.out.println(“a”);
}
}
class StaticCodeDome
{
static
{
System.out.println(“b”);
}
public static void main (Sting[] args)
{
new StaticCode();
new StaticCode();
System.out.println("c");
}
}
问题 new StaticCode(); 不是加载 StaticCode类进内存吗?
那我new StaticCode(); 了两次不应该是加载了2次吗?
作者:
胥文
时间:
2013-2-24 13:29
静态代码块随着类的加载,只加载一次,用于给类进行初始化
如果你调用多次,也就第一次加载,后面就不用加载了
作者:
陈科宇
时间:
2013-2-24 13:36
朋友,你的理解有点偏差哈。 new StaticCode(); 并不是将类加载进内存哈。将类载入内存肯定在建立一个对象之前就完成了。这个语句只是为你新建的对象分配内存空间,而类的准备工作,在建立对象前早已做好,也即楼上所说,类初始化only once。
作者:
陈圳
时间:
2013-2-24 13:54
函数内的构造代码块和静态构造代码块的区别:
前者每个对象建立都会先调用构造代码块.
静态代码块是在这个类加载时,运行一次.
他们的运行顺序:静态代码块->构造代码块->构造函数
作者:
王小丑
时间:
2013-2-24 14:40
静态代码块随着类的加载只加载一次,就算多次的实例化这个对象,静态代码块也就加载第一次,后面是不会再加载的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2