
java 中static和 类加载问题
publicclassStaticDemo{publicstaticvoidmain(String[]args){System.out.println(test.u);S...
public class StaticDemo {
public static void main(String[] args) {
System.out.println(test.u);
System.out.println("before");
System.out.println(test.d);
System.out.println("finish");
}
}
class test{
//静态代码块
static{
System.out.println("静态代码块正在加载...");
}
public final static int u = 3;
public static int d=2;
public test() {
}
}
//静态变量是在类加载期间分配的,那当我调用test.u的时候,没有先打印出“代码块在加载”,也就是说test
//类并么有被加载。
//难道是因为final static ,但是当我注销掉//System.out.println(test.u);在运行,发现类被加载了
//先运行了代码块中的输出 展开
public static void main(String[] args) {
System.out.println(test.u);
System.out.println("before");
System.out.println(test.d);
System.out.println("finish");
}
}
class test{
//静态代码块
static{
System.out.println("静态代码块正在加载...");
}
public final static int u = 3;
public static int d=2;
public test() {
}
}
//静态变量是在类加载期间分配的,那当我调用test.u的时候,没有先打印出“代码块在加载”,也就是说test
//类并么有被加载。
//难道是因为final static ,但是当我注销掉//System.out.println(test.u);在运行,发现类被加载了
//先运行了代码块中的输出 展开
4个回答
展开全部
你这是内部类,不是静态块。如果是静态块,直接写static{,前面不要写class test{
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
final static是一个常量,test不会加载,test.u当成常量使用
追问
常量难道是在javac编译的时候就在内存中分配了空间?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-10
展开全部
?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询