黑马程序员技术交流社区
标题:
请高手指点??
[打印本页]
作者:
自己玩
时间:
2012-7-1 22:53
标题:
请高手指点??
本帖最后由 自己玩 于 2012-7-1 23:13 编辑
package cn.itcast.servlet;
public class DoSomeThing {
/**
* @param args
*/
DoSomeThing() {
System.out.println("----------DoSomething------------");
}
static {
System.out.println("----------static------------");
}
{
System.out.println("----------{}------------");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("mian");
new DoSomeThing();
}
}
虚拟机是main()方法中开始执行,但是请看打印结果!
----------static------------
mian
----------{}------------
----------DoSomething------------
作者:
王一军
时间:
2012-7-1 23:09
package cn.itcast.servlet;
public class DoSomeThing {
/**
* @param args
*/
DoSomeThing() {
System.out.println("----------DoSomething------------");
}
static {
System.out.println("----------static------------");
}
{
System.out.println("----------{}------------");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("mian");
new DoSomeThing();
}
}
虚拟机是main()方法中开始执行,但是请看打印结果!
----------static------------
mian
----------{}------------
----------DoSomething------------
我来帮你说说吧
static {
System.out.println("----------static------------");
}
这种写法,称为java中的静态代码块一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下也一定会执行,所你你程序运行的时候首先执行了 System.out.println("----------static------------");输出了 ---------static------------,
静态代码块的作用就是用来初始化一些项目最常用的变量或对象;静态方法可用作不创建对象也可能需要执行的代码.
执行完静态代码块之后就会返回到main方法执行
System.out.println("mian"); 所以紧跟其后你看到了输出了 main 执行完
之后再往下执行会执行到
new DoSomeThing(); 这样的写法在java中称之为匿名对象,就是给DoSomeThing类创建了实例
其次在说下
{
System.out.println("----------{}------------");
}
这样的写法在java中称为构造块,构造块是在类被实例化的时候最先执行,其优先于构造方法。所以在DoSomeThing类被实例话的时候会首先执行构造块中的代码System.out.println("----------{}------------"); 所以你看到紧接着输出了 ----------{}------------ 构造块被执行完之后,就会去执行构造方法中的内容
DoSomeThing() {
System.out.println("----------DoSomething------------");
}
所以最后输出的是构造方法中的信息----------DoSomething------------,这个就是你这个程序的整个执行流程
作者:
李建锋
时间:
2012-7-1 23:11
虚拟机加载的时候也是按普通类加载的方式加载的,即1 静态代码块
2 构造代码块
3 构造函数
的顺序加载的,只不过main方法是不用调用,虚拟机做完那些常规的工作,就会进入main方法!
作者:
陌花╮有意、
时间:
2012-7-1 23:32
这个要看加载顺序:
1.class字节码
2.静态代码块 //所以有 -------stati----------
3.分配类的存储空间
4.默认初始化
5.显示初始化
6.构造代码块 //所以有 ---------{}----------
7.构造函数 //所以有 ---------DoSomething---------
在静态过后就是main函数执行,所以 ----------mian---------- 在前面
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2