是不是编译时这样进行的:
比如:
Frame jf=new Frame(); 先到tools.jar里查找有没有这个 *.class 对应的字节码文件.
Button b=new Button();
NewClass nc=new NewClass(); //假如这个类在classpath的路径下,又已经编译成*.class文件
即使没有import进来也不会编译出错,是吧?
我做过试验的,但是执行会出错.....
希望大哥们给点意见
比如:
Frame jf=new Frame(); 先到tools.jar里查找有没有这个 *.class 对应的字节码文件.
Button b=new Button();
NewClass nc=new NewClass(); //假如这个类在classpath的路径下,又已经编译成*.class文件
即使没有import进来也不会编译出错,是吧?
我做过试验的,但是执行会出错.....
希望大哥们给点意见
楼主【sure2003】截止到2008-07-14 20:43:07的历史汇总数据(不包括此帖):
发帖的总数量:238 发帖的总分数:10143 每贴平均分数:42
回帖的总数量:203 得分贴总数量:5 回帖的得分率:2%
结贴的总数量:232 结贴的总分数:9963
无满意结贴数:2 无满意结贴分:50
未结的帖子数:6 未结的总分数:180
结贴的百分比:97.48 % 结分的百分比:98.23 %
无满意结贴率:0.86 % 无满意结分率:0.50 %
值得尊敬
执行的时候才查找import
但似乎也有意外情况,具体忘记了
等高手解释
编译时也要用到这些 class 文件,用来校验使用是否正确,例如调用的方法参数是否合适等等。
import 只是方便写程序才用的,免得写个类名还得加上一堆包名作限定,编译后在 class 文件中都是以 java.util.Scanner 这样的带包名限定的完整类名出现的。
import进来的是*.java源文件
而classpath中都是*.class字节码文件,是这样吗???
import 很容易让人产生误解,它什么都没有“导入”进来(跟 C/C++ 的 include 编译预处理命令完全两码事),它只是声明了一下你下面源代码中出现的类来自哪个包,即指出了这些类名带包名限定的全称是什么。相比之下 C# 中的 using 这个关键词更贴切。