返回信息流public class InitDemo{
InitDemo(){ //这是构造函数吧?
j=1000;
System.out.println("j="+j);
}
int i;
static int j=50;
{ //{}这里面的部分代表什么呢,执行顺序要先于构造函数呢?
i=5;
j=10;
System.out.println("i="+i);
System.out.println("j="+j);
}
static{
j=100;
System.out.println("j="+j);
}
public static void main(String[ ] args){
System.out.println("InitDemo.j="+InitDemo.j);
InitDemo aa=new InitDemo();
InitDemo.j=500;
System.out.println("aa.j="+aa.j);
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #37950同步于 2015/1/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
初学java,大家帮忙看看下面的程序是怎么执行的呢
ydhy201
2015/1/8镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
肯定是static{}先执行 我想知道{}和构造函数哪个先执行
【 在 icyfox 的大作中提到: 】
: {}里的内容应该是在类构造时期就执行的,好像是 {} 早于 static{} 早于 构造?
请问{}和构造函数哪个先执行
【 在 dss886 的大作中提到: 】
: 3、static代码块
: static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
: http://developer.51cto.com/art/201204/332155.htm
: ...................
你想问哪个最先,咱们跑一下不就好了么。
public class WhoIsFirst {
public static int k = 1;
public WhoIsFirst() {
System.out.println("调用构造函数");
}
{
System.out.println("调用{}结构");
}
static {
System.out.println("调用static结构");
}
}
public class Str {
public static void main(String[] args) {
System.out.println("程序启动");
System.out.println(WhoIsFirst.k);
WhoIsFirst wif = new WhoIsFirst();
}
}
Output:
程序启动
调用static结构
1
调用{}结构
调用构造函数
赞
【 在 icyfox (【意涵团】狐狸|5号之前看完JVM) 的大作中提到: 】
: 你想问哪个最先,咱们跑一下不就好了么。
: [code=java]
: public class WhoIsFirst {
: ...................
通过『我邮2.0』发布
【 在 icyfox 的大作中提到: 】
: 你想问哪个最先,咱们跑一下不就好了么。
: [code=java]
: public class WhoIsFirst {
: ...................
赞!
【 在 icyfox 的大作中提到: 】
: 我这是自己不清楚没辙啊...要不能背出来就好了
:
我也背不下来(捂脸
无耻地搬运一下JLS: http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.4