没有性能命中.它只影响编译器解析类型的方式; 对生成的字节代码或运行时可用的信息没有影响.它几乎完全等同using [namespace]于C++(其中包类似于命名空间).
与C++一样,您也可以使用其包完全限定类型而不是导入它.
C++:
Something::Whatever x = ...;
// or
using namespace Something;
Whatever x = ...;
Java的:
com.something.Whatever x = ...;
// or
import com.something.*;
Whatever x = ...;
您可以(也应该)导入特定类型:
C++:
using Something::Whatever;
Java的:
import com.something.Whatever;
与C++一样,同一个包中的类可以相互引用,而无需限定包名.
请注意,与C++不同using namespace,它import必须位于文件的顶部.另外,包名称直接反映了源相对于类路径的目录结构(路径分隔符用点替换); 因为类可以在Java中动态加载,所以包名称还指定了类加载器在文件系统中查找类的位置.
另外,选择尼特,C中没有这样的概念.