之间的性能复杂程度如何?
java.io.*
和
java.io.File
PS。
我知道第一个文件将包含java.io.*
中的每个文件,下一个文件只包含选定的类文件。
答案 0 :(得分:32)
在运行时0。
两者都生成相同的字节代码
答案 1 :(得分:24)
在编译时将导入解析为完全限定名称。没有运行时性能差异。如果查看生成的字节码,它们将是相同的。
可能使用一种或另一种形式的编译时间开销,但它可能很小,没有人关心它。
我知道第一个文件将包含java.io. *中的每个文件,下一个文件只包含选定的类文件。
不完全是。明星导入的作用是使所有类名可用。实际的类本身不是“包含”的......在C或c ++编程语言中。
许多人使用显式导入而不是通配符导入的真正原因是:
显式导入清楚地记录了类直接使用的外部类,前提是您不在代码中留下冗余导入。
显式导入可避免在导入包含具有相同(简单)类名的类的两个包时出现名称冲突的问题。
显式导入可避免出现脆弱性问题,即某人将某个新类添加到您导入通配符的某个包中。由于名称冲突,这可能导致以前用于编译的代码中出现新的编译错误(参见前面的内容)。
现代IDE具有加速器,代码省略和其他功能,可帮助您在使用显式导入时控制导入。
答案 2 :(得分:10)
对运行时没有性能影响,可能会对编译时间产生影响: http://www.javaperformancetuning.com/news/qotm031.shtml
答案 3 :(得分:5)
不,对运行时性能没有影响。因为import
语句是编译器指令而未转换为字节代码。正如@ Stephen C所述,只有编译时间开销。
答案 4 :(得分:3)
特定导入之间没有性能差异 和通配符导入声明。
未读入导入包中的类的信息 编译时间或运行时间,除非在程序中使用该类。该 import语句只是告诉编译器在哪里找到它 类。特定导入之间没有性能差异 和通配符导入声明。
(Liang,Daniel Y."计算机,程序和Java简介。" Java编程简介。综合版。第9版.N.p。:Pearson,n.d。24.打印。)
答案 5 :(得分:0)
它们之间没有性能差异。
答案 6 :(得分:0)
如果你在EL'中有未定义的变量,那么在jsp中那么应该避免使用外卡导入语句。通配符导入将对运行时性能产生巨大影响(由于“静态字段和方法引用”处理)。