查了一个下午关于包、类路径变量的内容,头昏脑胀的,但是还是有一些问题不懂,希望有高手可以详细解答(分数只给能让我明白的人):1.同一个文件夹内的两个类文件(后缀名为.java),如果要让其中一个类调用另一个类,比如Aaa.java和TestAaa.java,可以在Aaa.java和TestAaa.java两个文件中同时打包package ****(包名),然后在TestAaa.java中import ****.Aaa,就可以让TestAaa.java访问Aaa.java,这样的方法没有错误吧?2.大项目有许多类文件,通过包的形式来组织会更规范更合理,但是如果只是两个类文件,那么这样的做法效率反而更低,有没有不通过打包引用的方式来实现TestAaa对Aaa的调用?只放在同一个文件夹下,不用package和import,直接在TestAaa文件里面创建Aaa对象并调用,这样做可以吗?3.关于类路径变量,也就是CLASSPATH吧?书里面有一段话我不懂:“如果编程时不使用包,而是将程序与所有的类都放在同一个目录(我理解为同一个文件夹)中,那么,除非当前目录在类路径中,否则Java就无法找到那些类。(如果你根本不使用类路径变量,就不会发生这种问题,只有在你决定设置类路径变量时才会出现这样的问题。)”,那么我又有问题了:我把所有的类文件都放在了F:\java文件夹下,我可以发誓我有设置CLASSPATH,而且我也可以发誓我并没有在CLASSPATH中设置F:\java(也就是说不是书里面所说的当前目录),那么java应该就无法找到那些我写的类了,为什么我写的那些练习类还能编译通过?问题问得比较混乱,如果有哪位高手不清楚我问什么可以在回帖中询问我,我只想知道这个知识点,其它的一切都好商量,希望高手们成全,谢谢。

解决方案 »

  1.   

    查了一个下午关于包、类路径变量的内容,头昏脑胀的,但是还是有一些问题不懂,希望有高手可以详细解答(分数只给能让我明白的人): 1.同一个文件夹内的两个类文件(后缀名为.java),如果要让其中一个类调用另一个类,比如Aaa.java和TestAaa.java,可以在Aaa.java和TestAaa.java两个文件中同时打包package ****(包名),然后在TestAaa.java中import ****.Aaa,就可以让TestAaa.java访问Aaa.java,这样的方法没有错误吧? 
    这样没错,但同一个包内不需要import就能使用。
    2.大项目有许多类文件,通过包的形式来组织会更规范更合理,但是如果只是两个类文件,那么这样的做法效率反而更低,有没有不通过打包引用的方式来实现TestAaa对Aaa的调用?只放在同一个文件夹下,不用package和import,直接在TestAaa文件里面创建Aaa对象并调用,这样做可以吗? 
    可以,同上。
    3.关于类路径变量,也就是CLASSPATH吧?书里面有一段话我不懂:“如果编程时不使用包,而是将程序与所有的类都放在同一个目录(我理解为同一个文件夹)中,那么,除非当前目录在类路径中,否则Java就无法找到那些类。(如果你根本不使用类路径变量,就不会发生这种问题,只有在你决定设置类路径变量时才会出现这样的问题。)”,那么我又有问题了: 我把所有的类文件都放在了F:\java文件夹下,我可以发誓我有设置CLASSPATH,而且我也可以发誓我并没有在CLASSPATH中设置F:\java(也就是说不是书里面所说的当前目录),那么java应该就无法找到那些我写的类了,为什么我写的那些练习类还能编译通过?
    如果你是编译F:\java文件夹下的类的话是没有问题的,你肯定是在F:\java目录下执行javac编译命令的,这个时候javac会默认F:\java是CLASSPATH,你到其它地方执行javac就不行了。
    问题问得比较混乱,如果有哪位高手不清楚我问什么可以在回帖中询问我,我只想知道这个知识点,其它的一切都好商量,希望高手们成全,谢谢。 
      

  2.   

    1在同一个文件夹中,不需要import.
      

  3.   

    问题1,2:
    在同一个文件夹里的类相互调用,不需要import,直接写类名就行。
    import是用来对付其他文件夹(包)中的类的。问题3:
    没太看懂,大概说说我的看法。
    你用的什么方式编译的?如果是命令行里用javac F:\java\xxx.java 那么应该能编过,因为这个文件路径是你指定的。
    而CLASSPATH的作用在于:如果你要编译的文件里import了其他文件,比如 import javax.servlet.*;
    那么servlet文件夹里的所有类在哪,就需要你写在CLASSPATH里了。即CLASSPATH中的路径+\javax\servlet\*.class 
      

  4.   

    从java1.5开始不需要自己设置classpath了.