1. import 对代码的大小没有任何负面影响
2. Eclipse: Source->Organize Imports 自动扩展指定的导入列表
3. import 与 #include 的区别:
没有共同之处。C++ 中无法避免使用 #include,但 Java 中,通过显式的指定包名,就可以不使用 import
4. namespace
Java 的 package 与 import 类似于 C++ 中的 namespace 和 using
5. 静态导入
不仅可以导入类,还可以导入静态方法和静态域。
a. import static java.lang.System.*;
out.println("Hello World");
b. 更多用于算术函数和常量
sqrt(...) 而非 Math.sqrt(...)
d.get(DAY_OF_WEEK) == MONDAY 而非 d.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY
6. 包作用域
public:被任意类使用
private:被定义它的类使用
protected:被同一个包的所有方法使用
7. 类路径
为了使类能够被多个程序共享,需要做到以下几点:
a. 把类放到一个目录中
b. 把 JAR 文件放在一个目录中
c. 设置类路径(class path)。类路径是所有包含类文件的路径的集合。
在 UNIX 中,类路径用 : 分隔,在 Windows 中用 ; 分隔。
class path 所列出的目录和归档文件是搜寻类的起始点。例如如下的 classpath:
/home/user/classdir:.:/home/user/archivers/archive.jar
假定虚拟机要搜寻 com.alibaba.corejava.Employee 类文件,它首先要查看存储在 /jre/lib 和 jre/lib/ext 目录下的归档文件中所存放的系统类文件,然后再查看类路径,于是查看:
/home/user/classdir/com/alibaba/corejava/Employee.class
com/alibaba/corejava/Employee.class 从当前目录开始
com/alibaba/corejava/Employee.class inside /home/user/archivers/archive.jar
最好使用 -classpath(或 -cp) 选项指定类路径:
java -classpath /home/user/classdir:.:/home/user/archives/archive.jar MyProg.java
编译器定位文件则要比虚拟机复杂得多。查询所有的 import 指令。