黑马程序员技术交流社区
标题:
关于类的初始化
[打印本页]
作者:
苑桥别馆
时间:
2014-12-2 13:42
标题:
关于类的初始化
<div class="blockcode"><blockquote><p>class Main
{
public static final int a=2*3;
static {
System.out.println("init Main");
}
public static void main(String[] args)
{
System.out.println(Main.a);
}
};</p><p>//这个打印结果为 6</p>
复制代码
class TestObject
{
public static final int a=2*3;
static {
System.out.println(123);
}
}
class Main2
{
public static void main(String[] args)
{
System.out.println( TestObject.a);
}
};//这个打印结果为什么却为
//init TestObject
//6
为什么第一段代码没有初始化Main类,而第二段代码却初始化了Main2类?
作者:
relice
时间:
2014-12-2 21:12
class Test
{
public static final int a=2*3;
static {
System.out.println("init Main");
}
public static void main(String[] args)
{
System.out.println(Test.a);
}
}
复制代码
第一段代码是这样吧.因为编译一个类的时候会出现一个字节码文件,这时最先初始化静态代码块,所以输出结果是,
init Main
6
第二段代码你只是启动了main函数吧,那么肯定TestObject类就不会给初始化了,除非你实例下TestObject
作者:
禾青青
时间:
2014-12-3 23:37
学到了 嘻嘻
作者:
斷灬dian
时间:
2014-12-29 11:58
学到了 哈哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2