Java中的类是什么时候被加载到虚拟机?

根据反射机制说的是运行期间,动态的加载类,然后可以审视这些类的属性和方法,然后看到网上又说是编译期间就会将类加载,把我搞糊涂了,究竟类是怎么加载的?是编译期间还是运行期间... 根据反射机制说的是运行期间,动态的加载类,然后可以审视这些类的属性和方法,然后看到网上又说是编译期间就会将类加载,把我搞糊涂了,究竟类是怎么加载的?是编译期间还是运行期间? 展开
 我来答
erliang20088
2013-12-01 · TA获得超过2496个赞
知道小有建树答主
回答量:926
采纳率:100%
帮助的人:955万
展开全部
这个问题java的比较核心的一个难题,我就针对问题做简要回答,不做深入讨论了:
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。

2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的class实例的缓存中获取,谁用谁取就可以了,不会再去文件系统中加载.class文件了。

明白1,2点就够了,再深入要等一段才能明白了。
百度网友12ee0fd
2013-12-01 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2343万
展开全部
类是第一次被使用时加载的。

import语句就是一个语法糖,是为了不写那一长串的全限定名。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自己是自己的路
2013-11-30 · TA获得超过577个赞
知道小有建树答主
回答量:1644
采纳率:0%
帮助的人:483万
展开全部
java运行的时候加载的,结束后被收回
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
toyo_8410
2013-11-30 · 超过16用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:32.9万
展开全部
看到你这个问题,在这里我说说的我看法, 你大概没有完全理解编译期和运行期的作用。编译期只是编译器对Java的源文件进行语法检查,正解则将文件编译成Class文件, 错误时,就会提示错误信息,编译就不能通过。类加载器是专门加载类文件的,即编译完成后的Class文件。程序在运行的时候就需要类加载器去加载各种类文件,类文件只需加载一次,即已经加载的不会再被加载。
追问

那么他这里说的加载时是什么意思?是说java在编译时碰到需要import,就要将import进来的类进行编译吗?

追答
import的作用是在告诉编译器,程序中的某个类需要用到某处的那一个类,起到声明的作用,不是加载类文件,类加载是由ClassLoader对象去加载的。程序都是在运行起来后才起作用,如果不运行, 编译后的Class文件就是放在硬盘某个地方的文件,所以编译期没有类加载的概念!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-30
展开全部
就因为反射机制是运行期间,动态的加载类,所以才和一般的情况不同啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式