关于Import和编译效率的问题

前几天看Thinking in Java的时候, 注意到一个关于import包的问题,书上提到了大部分时候,我们会使用Java标准程序库内的种种组件,这个程序库其实是和编译器附在一起的。使用这些组件时,我们并不需要写上一场串的反转域名。如此只要我们这些写:

 

import java.util.ArraryList;

 

便可以告诉编译器,使用Java的ArraryList类。如果还想使用util内的其他类,又不想逐一声明, 那"*"即可, 如下所示:

 

import java.util.*;

 

那在写代码的时候,到底用那个好呢,这两者又有什么区别,或是利与弊?经资料,sun的官网和实践所得结论如下:

 

1. 第一种写法叫单类型导入,即 single -type-import;第二种写法按需类型导入,即type-import-on demand,两者在执行时间上没有不同,但     在编译的效率上,前者会快于后者,所以尽量多用单类型导入 (其中现在的Java IDE到支持自动导入,在看看jdk源码,sun的工程师也基本上都

    会使用前者)。

2. 处于语言的灵活性和不同编程者的习惯,java还是支持按需类型的导入。因为在某些情况下,可以少些几行代码 (只要不出现命名冲突的情况)。

3. 关于按需导入,它大致工作的原理是,先在无名包下查找目标类,再在当前包(可能是自定义)下查找目标类,然后到jdk下的核心包去查找目

    标类(如果出现诸如 java.util.List, java.awt.List 这中在不同命名空间下都有目标类名的情况,它会把两个包下的类都查找一边,即找到一个         util下的List后不会停止,会在其它包里继续查找List,以确定是否有命名冲突的问题)

 

所以对于目前的机器处理速度来说,其实#3的情况应该不是太大的问题,但我们完全可以在明确目标类型的情况下使用单类型导入,以提高编译的速度和避免命名冲突。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值