我的问题是关于这段代码:
import java.util.*;
我被告知此代码将导入所有Java包,但我的问题是: 它会消耗更多内存吗?因为在我正在做的程序中我只是使用:
import java.util.Scanner;
和
import java.util.InputMismatchException;
感谢您的帮助。
答案 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),并将返回错误。我们可以通过添加
import java.util.*;
import java.awt.*;
import java.util.List;// <-- solves List problem
但是为了避免这些问题,我们应该首先避免使用*
,特别是因为我们的IDE可以为我们生成导入。