java 中类的加载问题

yanghw1017 2012-07-23 03:27:16
运行一个java程序,启动一个JVM进程,那一个java项目中有很多的类的调用,当类调用的时候进程中是怎样的变化?
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
屌丝哥 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
结果是:
java权威指南
这是一个静态的代码块
0


为什么是这个结果?
[/Quote]

这个跟final有关,我个人的理解final static 和 static 在执行的时候是不相同的。
tatic变量执行前会检查类的static,如果有则执行
final static常量则不会检查,执行执行

你可以尝试着将“java权威指南”的final去掉看看结果,然后再将两个变量都设置成final再执行。
yanghw1017 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

JVM进程启动的时候肯定要指定一个入口类,一般都是你执行main()方法的那个类。
JVM会把所有相关的类通过Classloader加载进来,然后你入口程序调用哪个它就触发哪个。直到main()执行结束,JVM的后台进程会继续做收尾处理,等后台进程结束后整个程序就停止了。
[/Quote]



class MyTest{
static {
System.out.println("这是一个静态的代码块");

}
static final String name ="java权威指南";
static int page;
}


public class TestCompileConstant {
public static void main(String[] args) {
System.out.println(MyTest.name);
System.out.println(MyTest.page);
}
}

结果是:
java权威指南
这是一个静态的代码块
0



为什么是这个结果?
五哥 2012-07-23
  • 打赏
  • 举报
回复
启动类 肯定是先加载的 ,如果启动类继承了别的类,则父类先加载...接着就是用谁加载谁
yanghw1017 2012-07-23
  • 打赏
  • 举报
回复
谢谢!
屌丝哥 2012-07-23
  • 打赏
  • 举报
回复
JVM进程启动的时候肯定要指定一个入口类,一般都是你执行main()方法的那个类。
JVM会把所有相关的类通过Classloader加载进来,然后你入口程序调用哪个它就触发哪个。直到main()执行结束,JVM的后台进程会继续做收尾处理,等后台进程结束后整个程序就停止了。
若鱼1919 2012-07-23
  • 打赏
  • 举报
回复
用到哪个类就加载哪个类

62,621

社区成员

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

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