不管什么情况下只要用到了别的包中的类,都是需要到如相应的包的,只是String类是个常用的类,这里java官方就在你使用String类时,默认的导入了java.lang.*包。
在其他情况下,需要导入包时,你可以在编写完相应的类后,然后按快捷键:ctrl+shift+O,Eclipse就会自动的导入相应的包的。
另外在发个关于java包的:java中有两种包的导入机制, 总结如下:
单类型导入(single-type-import), 例如import java. io. File;
按需类型导入(type-import-on-demand), 例如 import java. io. *;
关于这两种导入类型大家各有所爱, 众说纷纭。 这里分析一下这两种导入类型的大致工作原理供大家参考。
单类型导入比较好理解, 仅仅导入一个public类或许接口。 而对于按需类型导入, 有人曲解为导入一个包下的所有类, 其实不然, 看名字就知道, 他只会按需导入, 也就是说它并非导入整个包, 而仅仅导入当前类需要运用的类。
既然如此是不是就可以放心的运用按需类型导入呢?非也, 非也。 由于单类型导入和按需类型导入对类文件的定位算法是不一样的。 java编译器会从启动目录(bootstrap), 扩展目录(extension)和用户类途径下去定位需要导入的类, 而这些目录进仅仅是给出了类的顶层目录。 编译器的类文件定位方法大致可以理解为如下公式:
顶层途径名 \ 包名 \ 文件名. class = 绝对途径
对于单类型导入很简单, 由于包明和文件名都曾经确定, 所以可以一次性查找定位。
对于按需类型导入则比较复杂, 编译器会把包名和文件名停止陈列组合, 然后对所有的可能性停止类文件查找定位。 例如:
packagecom; importjava. io. *; importjava. util. *;
当你的类文件中用到了File类, 那么可能出现File类的地方如下
File \\ File类属于无名包, 就是说File类没有package语句, 编译器会首先搜索无名包
com. File \\ File类属于当前包
java. lang. File \\编译器会自动导入java. lang包
java. io. File
java. util. File
需要注意的地方就是, 编译器找到java. io. File类之后并不会中止下一步的寻觅, 而要把所有的可能性都查找完以确定是否有类导入抵触。 假定此时的顶层途径有三个, 那么编译器就会停止3*5=15次查找。
注意:假设在查找完成后, 编译器发现了两个同名的类, 那么就会报错。 要删除你不用的那个类, 然后再编译。
理解以上原理之后, 我们可以得出这样的结论:按需类型导入是绝对不会降低Java代码的执行效率的, 但会影响到Java代码的编译速度。
查看JDK的源代码就知道SUN的软件工程师一般不会运用按需类型导入。 由于运用单类型导入至多有以下两点益处:
1。 提高编译速度。
2。 避免命名抵触。 (例如:当你import java. awt. *;import java. util. *后, 运用List的时分编译器将会出编译错误)
当然,运用单类型导入会运用你的import语句看起来很长。文章由Gainreel内衣旗舰店整理,收集辛苦,希望能保留出处。 |