看一下这个.java文件:
.java
class A { HashMap a; }
它不编译;我需要import java.util.HashMap;。现在考虑这一点:
import java.util.HashMap;
class A { String a; }
完全一样,只是用String代替HashMap,所以不应该编译,对吧?错误。
String
HashMap
好的,所以不必导入是众所周知的String,但是 为什么 呢?“明显”的答案是因为String它的使用频率远高于HashMap,但是不ArrayList应该“隐式导入”吗?原始包装器类,例如Integer和Boolean呢?ArrayList用 远远 往往比Long和Float,但我必须进口ArrayList,并不需要进口Float。
ArrayList
Integer
Boolean
Long
Float
什么是落后不需要对进口的原因String,Integer,Character,Exception和其他几个班?
Character
Exception
明显的答案是因为String它的使用频率远高于HashMap。
编号String属于java.lang软件包,由编译器自动导入。
java.lang
从java.langjavadoc:
提供对Java编程语言的设计至关重要的类。最重要的类是Object,它是类层次结构的根,而的Class实例则表示运行时的类。
Object
Class
并且来自Java语言规范。第7章包装
一个包由许多编译单元组成(第7.3节)。编译单元自动访问其软件包中声明的所有类型,并且还自动导入public预定义软件包中声明的所有类型java.lang。
public