编译过程中,类加载的时候,static int prt(...){...}就已经初始化 并驻 内存了,所以根本不需要你去初始化。
解决方案 »
- struts2报错:com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
- 如何控制显示时间的thetime的位置?
- Struts2中用jstl多还是ognl自己的标签多?
- CVS错误can't create temporary directory
- struts的页面为什么都是.do为后缀的呢?
- JSP请求路径的加密
- 关于hibernate的级联删除问题
- thinking in java中 inner calass的一个问题?
- 请问学习EJB有什么书比较好的?
- 关于struts标签使用的三个问题,在线等
- 100 分求分 为会么在JBuilder的工程里的JAVA文件 引入包时不能用*
- 用Hibernate连接Postgresql7.4的时候出现如下异常是怎么回事?(用proxool做连接池)
class Insect {
int i = 9;
int j;
Insect() {
prt("i = " + i + ", j = " + j);
j = 39;
}
static int x1 = prt("static Insect.x1 initialized");
static int prt(String s) { System.out.println(s);return 47; }
static int prt2(String s) { System.out.println(s);return 47; } // 此处根本没有被初始化}public class Beetle extends Insect {
int k = prt("Beetle.k initialized");
Beetle() {
prt("k = " + k);
prt("j = " + j);
}
static int x2 =
prt("static Beetle.x2 initialized");
public static void main(String[] args) {
prt("Beetle constructor");
Beetle b = new Beetle();
}
} ///:~但是输出结果为static Insect.x1 initialized
static Beetle.x2 initialized
Beetle constructor
i = 9, j = 0
Beetle.k initialized
k = 47
j = 39
我经过反复单步执行,发现只要是Insect 类(base class)中的静态成员都被初始化了,但是静态函数prt2()由于没有用到单步执行的时候就没有走到那里,这表明prt2()根本没有被初始化,请问那位大侠能指点一下啊?注:单步执行的时候就是模拟了类被装载
所有的static成员在类初次加载时初始化,并且只初始化一次!
prt2()是一个函数一个方法。
没有初始化的概念
初始化是针对属性而言的。。
因为属性必须要开辟空间存放(即初始化).
而方法只有在调用的时候才"初始化".
你在
public static void main(String[] args){
在这里调你那个静态方法//此时那个方法被调用,所以"初始化"
}...........