Java中的类是什么时候被加载到虚拟机?
根据反射机制说的是运行期间,动态的加载类,然后可以审视这些类的属性和方法,然后看到网上又说是编译期间就会将类加载,把我搞糊涂了,究竟类是怎么加载的?是编译期间还是运行期间...
根据反射机制说的是运行期间,动态的加载类,然后可以审视这些类的属性和方法,然后看到网上又说是编译期间就会将类加载,把我搞糊涂了,究竟类是怎么加载的?是编译期间还是运行期间?
展开
5个回答
展开全部
这个问题java的比较核心的一个难题,我就针对问题做简要回答,不做深入讨论了:
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。
2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的class实例的缓存中获取,谁用谁取就可以了,不会再去文件系统中加载.class文件了。
明白1,2点就够了,再深入要等一段才能明白了。
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。
2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的class实例的缓存中获取,谁用谁取就可以了,不会再去文件系统中加载.class文件了。
明白1,2点就够了,再深入要等一段才能明白了。
展开全部
类是第一次被使用时加载的。
import语句就是一个语法糖,是为了不写那一长串的全限定名。
import语句就是一个语法糖,是为了不写那一长串的全限定名。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java运行的时候加载的,结束后被收回
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看到你这个问题,在这里我说说的我看法, 你大概没有完全理解编译期和运行期的作用。编译期只是编译器对Java的源文件进行语法检查,正解则将文件编译成Class文件, 错误时,就会提示错误信息,编译就不能通过。类加载器是专门加载类文件的,即编译完成后的Class文件。程序在运行的时候就需要类加载器去加载各种类文件,类文件只需加载一次,即已经加载的不会再被加载。
追答
import的作用是在告诉编译器,程序中的某个类需要用到某处的那一个类,起到声明的作用,不是加载类文件,类加载是由ClassLoader对象去加载的。程序都是在运行起来后才起作用,如果不运行, 编译后的Class文件就是放在硬盘某个地方的文件,所以编译期没有类加载的概念!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-30
展开全部
就因为反射机制是运行期间,动态的加载类,所以才和一般的情况不同啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询