静态块执行了 几次??

daihuscorer 2010-05-18 02:45:55
import java.util.*;

public class ConstructorTest
{

public static void main(String[] args)
{
Employee[] staff=new Employee[3];

staff[0]=new Employee("Harry",40000);
staff[1]=new Employee(60000);
staff[2]=new Employee();

for(Employee e:staff)
System.out.println("name="+e.getName()
+",id="+e.getId()
+".salary="+e.getSalary());
// TODO code application logic here
}

}

class Employee
{

public Employee(String n,double s)
{
name=n;
salary=s;

}

public Employee(double s)
{
this("Employee #"+nextId, s);

}
public Employee()
{

}

public String getName()
{
return name;

}
public double getSalary()
{
return salary;
}
public int getId()
{
return id;
}

private static int nextId;
private int id;

private String name="";
private double salary;

// 静态块

static
{
Random generator=new Random();
nextId=generator.nextInt(100000);

}
{
id=nextId;
nextId++;
}
}

3次构造器 初始化对象 后面的静态块执行了几次 是1次还是3次??
...全文
342 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjliuzg 2010-05-18
  • 打赏
  • 举报
回复
在任何情况下都只被执行一次,定义静态块的目的就是在里面加载一些东西,在类被初始化的时候加载,之后就不用每次都加载了,这样的话执行效率是很高的,就是为了效率才这样设计的。希望你可以理解。
WilliamTau 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ticmy 的回复:]

引用 3 楼 daihuscorer 的回复:

为什么呢


这是java他爹当年这样规定的,你去问他为什么这样规定
[/Quote]

酷毙了~~
bekeer 2010-05-18
  • 打赏
  • 举报
回复
正常情况下好像是一此
构造块多次执行
静态块优先于构造块
patronsaint 2010-05-18
  • 打赏
  • 举报
回复
执行一次,没有为什么,这个语言就这样规定
chy2012 2010-05-18
  • 打赏
  • 举报
回复
static{

//静态块在程序中就执行力1次
}


{
//这种块与static 静态块 不同 每当实例化(new)一个对象,它就执行一次。
}


奔跑哥 2010-05-18
  • 打赏
  • 举报
回复
去看thinking in java,静态变量,静态块这些只在类加载的时候运行一次,
Mars_Ma_OK 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 icy_csdn 的回复:]
静态块只在jvm加载类时执行1次。
刚才好像有相同的帖子?!
[/Quote]

up!
龙四 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 daihuscorer 的回复:]

为什么呢
[/Quote]

这是java他爹当年这样规定的,你去问他为什么这样规定
icy_csdn 2010-05-18
  • 打赏
  • 举报
回复
静态块只在jvm加载类时执行1次。
刚才好像有相同的帖子?!
daihuscorer 2010-05-18
  • 打赏
  • 举报
回复
分配的内存的内容就不能改变了??
xinchen1224 2010-05-18
  • 打赏
  • 举报
回复
补充一下,static是静态修饰符,静态就是说在程序编译后为它分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。所以不管new几个对象,都只会在最初时执行一次,以后的就不执行了。
xinchen1224 2010-05-18
  • 打赏
  • 举报
回复
执行了一次,这个是static关键字的特性啊。
daihuscorer 2010-05-18
  • 打赏
  • 举报
回复
为什么呢
paullbm 2010-05-18
  • 打赏
  • 举报
回复
楼主,给你一个建议:
对于这类问题的解决方法就是:在各地方都加上打印语句,包你看得一清二楚!
龙四 2010-05-18
  • 打赏
  • 举报
回复
静态块一次

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧