我正在研究一个小的Java程序,并且正在使用数组,所以我做到了:
import java.util.Arrays;
后来,我开始扩展以前做过的事情,并决定要从用户那里得到输入,因此我添加了:
import java.util.Scanner;
现在发生了一个想法。我知道我可以这样做:
import java.util.*
然后,我只需要1条导入行,而不是2条(或者我最终需要很多条),但是导入中的通配符是否意味着它将从该包中导入 所有内容 ,而不管是否需要它,或者仅将选择性功能被拉?
我的直觉是编写更多代码,仅包含我 知道 我需要的软件包,但是如果没有区别,为什么有人会导入他们需要的更多关卡/软件包?(我宁愿懒惰,写更少的代码)
请清楚导入操作。这并不意味着加载.class文件和字节码。
.class
所有导入操作都允许您使用简短的类名来保存键入内容。
因此,如果java.sql.PreparedStatement在代码中使用PreparedStatement,则可以在import时使用java.sql.PreparedStatement。您可以永久编写Java代码,而无需使用任何import语句。您只需要拼出所有完全解析的类名即可。
java.sql.PreparedStatement
PreparedStatement
import
而且,类加载器.class在运行时首次使用时仍会从文件中引入字节码。
它为您节省了击键次数。就这样。
它与类加载 无关 。
就个人而言,我更喜欢避免使用*符号。我拼写每一个导入。我认为它可以更好地记录我的意图。我的IDE是IntelliJ,所以我要求它动态插入导入。
懒惰通常是开发人员的优点,但在这种情况下不是。拼出来,让您的IDE分别为您插入它们。
如果您输入
import java.util.*;
你会得到引用Scanner,并List通过他们的短名称。
Scanner
List
但是,如果你想要做同样FutureTask和LinkedBlockingQueue你必须有这样的:
FutureTask
LinkedBlockingQueue
import java.util.concurrent.*;