在学习C/C++时有#include<>之类的语句,我知道这是在编译进预处理程序会将<>中的.h文加载进来,再进行编译。用gcc编译成中间文件,然后打开这个中间文件看时,确实没有了#include<>语句,而代替成了.h文件的内容。我不明白Java中的import语句在编译成.class文件时它还存在不?若不存在它在整个编译过程中起什么作用?importjava
解决方案 »
- Transaction tran = dao.getSession().beginTransaction();报错
- javascript 较验0-1之间的浮点数
- 200元求个毕业论文
- 我会JAVA,想在四川找份软件开发的工作!
- 关于STRUTS的登陆问题.我怎么登陆不了!
- 怎样利用dom4j把XML文件解析出来?
- Collection?List?这两个有什么不同啊?
- JDOM能否可以与JavaScript一起使用,像XMLDOM一样.
- 那里有《think in java》2中源代码的下载?
- linux下使用wrapper注册系统服务报错!
- 首页包含别的模块,如何做
- JavaWeb中向Oracle数据库插入图片,求完整代码!
基本就是你编译本Class使用了另外一个类里的一些方法,你编译成了class他肯定是存在的。你打包发布后他也一起打包出去了。
1,class只是一个中间码,用来屏蔽平台无关的,所以他只是把源文件转换成了一种体积较小,符合jvm规范的一种格式,所以在class文件中,import存在的。
2,java的编译和链接是在jvm里完成的,jvm本身是用c(还是c++的我不清楚)编写的,当class文件装入jvm后,执行编译链接,过程可等同于c++
前面说的java的编译,这里纠正一下,我是参照c++将源文件编译成机器码这个过程而言,也就是说,我前面说的java编译是特指转换成机器码这个过程。1,java为了屏蔽平台无关性而使用了java虚拟机,而虚拟机本身是与平台有关的,就是我们平时看到的windows版本和linux版本而且还有32位和64位之分,但作为一个开发者,我们写代码时很少考虑到这些。
2,正是由于要经历虚拟机,所以java的编译可以看作分为两个步骤进行:前端编译(javac)和后端编译(JIT)。当然现在也有一步到位的编译器。
3,我们通常所说的java编译大多是指前面编译,也就是前面提到的,将java源文件转换成jvm规范的一种格式,虽然它也是二进制的,但是它只能被虚拟机所识别。但是我们知道,java虚拟机其实并不是只能执行由java语言写成的代码,它也可以执行groovy, jpython这样的语言写成的源码,这些源码都会经历前端编译。前面编译不会做链接工作,它只是进行语法检查和格式转换。
4,早期的虚拟机会以解释执行的方式来执行代码,我们都知道,解释执行的性能是没有编译执行快的,这也是为什么总是说java慢的原因。后来java加入即时编译器(JIT)使得java可以以解释执行和编译执行两种方式来执行代码。这一阶段,我们可以称之为后端编译。在这个时候,虚拟机将class文件编译成机器码,并链接其它文件。所以从这个角度来看,import在前端编译时,不会做什么实质性的事情,只是一个标识而已。在后端编译时,虚拟机会根据所需要的类优化导入,据说JIT可以在运行进搜集到更多的信息从而可以编译出在性能上可以达到甚至超过c++的机器码。
java中import就相当于你需要用什么工具 ,得先拿来才能用。
在这个.java文件里面,只要挟ArrayList即可,编译器编译的时候,自动会识别并编译为java.util.ArrayList。