今天也不知道怎么的突发奇想:JVM在当前目录下找不到的话会到classpath下面去找类,既然这样为什么要用import把类导入呢?不知道怎么就卡着上面了,我知道这个问题很菜,请各位大哥不吝赐教

解决方案 »

  1.   

    我觉得是编译器需要通过import找到那些类
      

  2.   

    所有要用到的包都要 import正确导入,否则程序怎么知道是要引用哪一个包?比如:java.sql.Date 与 java.util.Date等等
      

  3.   

    JVM在当前目录下找不到的话会到classpath下面去找类,既然这样为什么要用import把类导入呢?
    其实完全不用导入类,如果你想每次用到该类就用该类的完整名,也就是家上包名
      

  4.   

    你是钻进去了~~~呵呵~~~
    import 的作用是告诉 JVM 要使用的类是哪个。你可以不选择这中方式来通知 JVM 而选择其它的方式。例如:在逻辑中录入类的完全限定名。如:在不使用 import 的情况下这样写:java.util.Calendar ca = java.util.Calendar.getInstance();
      

  5.   

    反正JVM如果在当前路径下找不到的话会到classpath下面找,说的意思是如果在当前路径下找不到的话,会根据你的import的路径来找,比如说import java.util.*;它会找java.util下面的类,其他的它不找,即使在java.util下面有包,它也不会进包去找,而不是说从classpath的总路径下开始一级一级的往下找,知道找到这个你需要的类一样,就和搜索那样从总路径开始直到找到这个类为止,甭管这个类有多深,一直搜索下去,是吗?
      

  6.   

    反正JVM如果在当前路径下找不到的话会到classpath下面找,说的意思是如果在当前路径下找不到的话,会根据你的import的路径来找,比如说import java.util.*;它会找java.util下面的类,其他的它不找,即使在java.util下面有包,它也不会进包去找,而不是说从classpath的总路径下开始一级一级的往下找,知道找到这个你需要的类一样,就和搜索那样从总路径开始直到找到这个类为止,甭管这个类有多深,一直搜索下去,是吗?
      

  7.   


    你理解错了,classpath 和 import 是两回事。
    classpath 是告诉 JVM 你的程序中要使用的 jar (当然不仅仅是 jar )在那个路径下。
    而 import 则是告诉 java compiler,或 JVM 。“你所使用的某个类(例如 Calendar )是哪个包下的。(例子中它是 java.util 包下的 )。java 引入包,就是为了解决‘相同类名’的问题” 
    import 的“东西”不是路径(呵呵这么说还真蹩脚啊)。当你为一个类定义了一个包后,这个类文件就会存储在你所认为的“路径”中,但是,你不能仅仅认为他是路径。它最重要的作用就是“区分具有相同名称的类”。就像 2 楼给你的例子:Date 这个类名称对应了两个类。那 java compiler 或 jvm 怎么知道你用的是哪个类呢,就是通过 import 。这就是 import 的作用。仅此而已,它没有告诉 jvm 或 java compiler 去哪找“类文件”的功能。