1.package和import机制
package就类似命名空间,解决类的冲突问题,便于管理。在使用了package的java文件编译为class文件中,可以获得该package信息,一旦使用该类,即在正确的包名下才有效。
import即导入类,不可以总理解为:将该类加载至内存中!因为类加载器的预先载入机制,已经完成了常用类的Class字节码的实例对象(类加载器机制>>).import并没有实现加载至内存的功能,它只是一个路径。如果该类没有加载,加载器会在它的引导下,加载进内存!import机制可以简化编写程序代码复杂过程,在该java文件中需要使用的类通过import方式(其中包含lang包的默认导入),简化了编写代码,在编译过程中,会将该java文件中需要引用的类以完整路径展现,在编译后的class文件中,并不包含import信息!
2.package细节
A.java使用了package com.baidu.app,在执行javac时,将会产生一个A.class文件,该class文件记录有package的包名信息!
(1).如果在编译的时候,没有指定编译目录,则默认将class文件存储于当前目录.该类不可以正常使用,因为该类在com.baidu.app包中才有效。
(2).如果指定了目录DIR,则class文件存储于DIR目录下的com.baidu.app目录中。
3.import导入方法
(1).精确导入
import java.util.List;
(2).按需导入
import java.util.*;//导入该包下在所有孩子类
按需导入的区别(只在编译阶段)
1).编译速度,第二种不如第一种那么精准,可能花费的时间长些;
2).可能会出现命名冲突
4.import static,导入所有静态成员
import static java.lang.*;//导入lang包下所有的静态成员,可以直接使用out.println("infomation");
java -verbose Demo.java
使用verbose选项,可以了解编译和执行过程中JVM所做的每件事情!