帮忙看个静态引用的问题,很简单 说明原因即可。

hanluner 2010-03-29 12:47:37
说明原因 为什么只有一个hi输出,可以从内存角度,以及对象引用的角度,尽可能详细吧。



class Seem{
static{
System.out.println("hi");
}
}
public class Palo {

/**
* @param args
*/
public static void main(String[] args) {
Seem s1 = new Seem();
Seem s2 = new Seem();
Seem s3 = new Seem();

}

}
...全文
55 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinfeng891030 2010-03-29
  • 打赏
  • 举报
回复
类的静态代码只能执行一次!
Dazzlingwinter 2010-03-29
  • 打赏
  • 举报
回复
Seem s1 = new Seem();
该语句执行时,类静态代码块被执行一次
Seem s2 = new Seem();
Seem s3 = new Seem();
执行上面两个时,静态代码归属类所有,不依赖对象,所以不再执行。。。
stalendp 2010-03-29
  • 打赏
  • 举报
回复
在执行
Seem s1 = new Seem();
这段代码的时候,发现Seam还没有在内存中,所以类加载器负责在环境变量中查找Seam,并把它加载到相应的内存块,同时执行static域中的代码。
等到s2,s3被创建时,因为Seam已经在内存中了,所以没有必要再执行static域中的代码了。
简单的理解为,static是属于类的,而不是属于某个特定对象的

62,615

社区成员

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

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