关于包的问题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/20 18:29:41
首先我明白包是用来组织类的,否则这些类很难管理。
再次我也清楚路径的问题。
我要问的是在类前面没有package语句,直接就调用一个文件夹下面的class文件,可不可以?
也就是说生成这个class文件的源文件没有package *******这个语句。
如果可以的话,这个语句似乎是没有用的。
比如我编译一个源文件A.java生成A.class,把这个A.class放在一个文件夹pack下面,另一类B,在它的首部用import pack.B;语句引用这个A类可不可以?
也就是说这个A没有用package语句打包。
如果这个样可以的话,那么我把我编译过的源程序,生成的class文件自己组织部就可以了吗?何必用那个package语句呢?
再问一下:用这个语句和不用这个语句有何区别?

我觉得你对java编译器的执行过程不是很清晰。
首先回答你第一个问题,在类前面没有package语句,直接就调用一个文件夹下面的class文件是没有问题的。package *******这个语句是将你所要编译的这个类编译的.class文件到******这个文件夹(外观上看),如果你所调用的类是属于这个包中的是没有问题的,因为编译器在寻找的时候首先寻找jdk系统提供的各种基础类库,然后找操作系统中的类库(jre中有一部分是在syatem32文件中的),然后寻找当前目录,这个是从unix中继承的。所以这条语句不是没有用,而是你没有用到。
第二个问题,其实如果第一个问题你弄明白了第二个也就没有必要说了,这个就要说到相对路径了,在windows中如果你要找到一个文件,那么必须给出这个文件的绝对路径,类似C:\windows\system32\cmd.exe,而java的unix的产物,那么他就没有绝对路径这个概念,所以我们假如把A类和B类放在了D:\a目录中,如你所说A类没有打包,B类打包在b目录中,此时,如果A类中用import导入B类(我不明白另一类B,在它的首部用import pack.B;语句引用这个A类是什么意思,因为有矛盾)那么java编译器在寻找时相对于A类的目录是可以找到b目录的,所以是可以执行的。

如果我上面说的你看不懂的话,我强烈建议你看看《java的深度历险》这本书,第一章对java的编译和执行过程以及包结构做了很深入的探讨,相信看完那本书你会受益匪浅的!

package外在表现就是文件夹