黑马程序员技术交流社区
标题:
请问这段代码的结果是什么?问什么?
[打印本页]
作者:
baofanfan
时间:
2013-3-15 22:25
标题:
请问这段代码的结果是什么?问什么?
public class StaticCode {
public static void main(String[] args) {
Code code1 = new Code();
Code code2 = new Code();
}
}
class Code{
{
System.out.println("普通的代码块...");
}
static{
System.out.println("静态代码块...");
}
public Code(){
System.out.println("构造方法...");
}
}
作者:
jdzzlf
时间:
2013-3-15 23:24
结果为:静态代码块,普通的代码块,构造方法,普通代码块,构造方法。
因为静态代码块即static的代码块优先于构造代码块,构造代码块优先与构造方法。但是不管有多少个对象产生,静态代码块只执行一次。
静态代码块是:
static{
System.out.println("静态代码块...");
}
复制代码
构造块是:
class Code{
{
System.out.println("普通的代码块...");
}
复制代码
构造方法为:
public Code(){
System.out.println("构造方法...");
}
复制代码
作者:
丘凤光
时间:
2013-3-15 23:49
代码的执行结果:
静态代码块...
普通的代码块...
构造方法...
普通的代码块...
构造方法...
复制代码
原因:
1、静态代码块优于普通代码块执行,普通代码块优于构造函数执行;
2、静态代码块随着类的加载而执行,且只执行一次,用于给类初始化;
3、普通构造代码块是给所有对象统一初始化。
Code code1 = new Code();
语句先执行了静态代码块
static
{
System.out.println("静态代码块...");
}
然后执行普通构造代码块
{
System.out.println("静态代码块...");
}
最后执行构造函数
public Code()
{
System.out.println("构造方法...");
}
Code code2 = new Code();
因为Code类已经在堆内存中加载,所以不再执行静态代码块。语句对code2初始化执行
普通构造代码块
{
System.out.println("静态代码块...");
}
最后执行构造函数
public Code()
{
System.out.println("构造方法...");
}
作者:
王小丑
时间:
2013-3-16 09:50
结果为:静态代码块,普通的代码块,构造方法,普通代码块,构造方法。
作者:
hjcpempb
时间:
2013-6-19 17:56
标题:
支持!
我是来刷墙的
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br>光子祛斑
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2