Java导入包

时间:2015-01-09 13:02:40

标签: java memory import package

我的问题是关于这段代码:

import java.util.*;

我被告知此代码将导入所有Java包,但我的问题是: 它会消耗更多内存吗?因为在我正在做的程序中我只是使用:

import java.util.Scanner;

import java.util.InputMismatchException;

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

不,延迟导入对生成的程序没有影响。请参阅此问题:Java import vs code performance

使用延迟导入与显式导入更是一个可读性问题。 (另外,如果您引用两个包中存在的类名,则需要显式导入以解决歧义。)

答案 1 :(得分:2)

  

我被告知此代码将导入所有Java包

不,它只是告诉编译器当我们在代码中使用简单的名称如List而不是全名java.util.List时,它应该搜索哪些包来搜索类/接口的详细信息(编译器需要更改每个简单的将其命名为全名。

通常最好避免使用*,因为当几个包具有相同名称的类时,它可能会导致问题。例如,我们添加此导入

import java.util.*;
import java.awt.*;

并使用List。编译器不会知道我们在这里List(java.awt.List或java.util.List),并将返回错误。我们可以通过添加

来描述想要使用的List的精确位置来解决它
import java.util.*;
import java.awt.*;
import java.util.List;// <-- solves List problem

但是为了避免这些问题,我们应该首先避免使用*,特别是因为我们的IDE可以为我们生成导入。