为什么我不必导入一些类?

The*_*Hat 0 java import

看看这个.java文件:

class A {
    HashMap a;
}
Run Code Online (Sandbox Code Playgroud)

它不编译; 我需要import java.util.HashMap;.现在考虑一下:

class A {
    String a;
}
Run Code Online (Sandbox Code Playgroud)

这是完全一样的,只是用String的,而不是HashMap-所以它不应该编译吧?错误.

好的,所以众所周知你不必导入String,但为什么呢?"显而易见"的答案是因为String使用频率远远超过HashMap,但是不ArrayList应该"隐式导入"?原始包装类怎么样,例如IntegerBooleanArrayList使用的频率远远超过LongFloat,但我必须导入ArrayList,不需要导入Float.

什么是落后不需要进口的原因String,Integer,Character,Exception和其他几个班?

Lui*_*oza 6

显而易见的答案是因为String使用频率远高于HashMap.

No. String属于java.langpackage,由编译器自动导入.

来自java.langjavadoc:

提供对Java编程语言设计至关重要的类.最重要的类是Object类层次结构的根,并且其Class实例在运行时表示类.

并从Java语言规范.第7章包

包由许多编译单元组成(第7.3节).编译单元自动访问其包中声明的所有类型,并自动导入public预定义包中声明的所有类型java.lang.