转载地址:http://blog.sina.com.cn/s/blog_56f69c6601016erf.html

import导入声明可分为两中: 
1>单类型导入(single-type-import) 
例:import java.util.ArrayList; 
2>按需类型导入(type-import-on-demand) 
例:import java.util.*;

以这样两种方式导入包中的任何一个public的类和接口(只有public类和接口才能被导入)

*导入声明仅导入类型而不导入子包;这就是为什么称它们为单类型导入和按需类型导入声明的原因.

*导入的类或接口的简名(simple name)具有编译单元作用域.这表示该类型简名可以在导入语句所在的编译单元的任何地方使用.这并不意味着你可以使用该类型所有成员的简名,而只能使用类型自身的简名. 
例如: java.lang包中的public类都是自动导入的,包括Math和System类.但是,你不能使用简名PI()和gc(),而必须使用Math.PI()和System.gc().你不需要键入的是java.lang.Math.PI()和java.lang.System.gc().

程序员有时会导入当前包或java.lang包,这是不需要的,因为当前包的成员本身就在作用域内,而java.lang包是自动导入的.java编译器会忽略这些冗余导入声明(redundant import declarations).即使像这样 
import java.util.ArrayList; 
import java.util.*; 
多次导入,也可编译通过.编译器会将冗余导入声明忽略.

使用按需导入声明是否会降低Java代码的执行效率?绝对不会! 
Java编译器产生的类文件仅包含编译单元实际使用到的类或接口的符号引用.

这是否意味着你总是可以使用按需导入声明?是,也不是! 
在类似Demo的非正式开发中使用按需导入声明显得很有用. 
然而,有这四个理由让你可以放弃这种声明: 
1>编译速度:在一个很大的项目中,它们会极大的影响编译速度.但在小型项目中使用在编译时间上可以忽略不计. 
2>命名冲突:解决避免命名冲突问题的答案就是使用全名.而按需导入恰恰就是使用导入声明初衷的否定. 
3>说明问题:全名的使用是自说性的.毕竟高级语言的代码是给人看的. 
4>无名包问题:如果在编译单元的顶部没有包声明,Java编译器首选会从无名包中搜索一个类型,然后才是按需类型声明.如果有命名冲突就会产生问题. 
Sun的工程师一般不使用按需类型导入声明.这你可以在他们的代码中找到: 
在java.util.Properties类中的导入声明: 
import java.io.IOException; 
import java.io.printStream; 
import java.io.printWrite; 
import java.io.InputStream; 
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.util.Hashtable;

你可以看到有趣的是,她连java.util.Hashtable也导入,这可是在当前包中啊!

-------------------------------------------------------------------------------------------------------------

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xgtian.blog.51cto.com/3844449/737269

java中import两种导入类型比较相关推荐

  1. Java中的两种异常类型及其区别?

    Java中的两种异常类型及其区别? 参考文章: (1)Java中的两种异常类型及其区别? (2)https://www.cnblogs.com/zxfei/p/11182730.html (3)htt ...

  2. <随笔03>Java中的两种异常类型

    <随笔03>Java中的两种异常类型 参考文章: (1)<随笔03>Java中的两种异常类型 (2)https://www.cnblogs.com/newlyfly/p/744 ...

  3. java类型转换答案,在java中支持两种类型的类型转换,自动类型转换和强制类型转换。父类转化为子类需要强制转换。...

    在java中支持两种类型的类型转换,自动类型转换和强制类型转换.父类转化为子类需要强制转换. 更多相关问题 计算机病毒通过()传染扩散得极快,危害最大. 当一个现象的数量由小变大,另一个现象的数量相反 ...

  4. JAVA中的八种基本类型

    一.JAVA中的八种基本类型 1.数字类型(6种)   ①byte:     占的位数:byte数据类型占八位: 最小值为:-128(-2^7): 最大值为:127(2^7-1): 默认值为:0: 作 ...

  5. Java中的8种原始类型

    几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化. 首先,我要介绍有关Java的8种原始类型的所有信息. Ja ...

  6. JAVA中两个char类型相加_1、JAVA中的几种基本类型,各占用多少字节?

    1.Java是一种强类型语言.这就意味着必须为每一个变量声明一种类型.在Java中,-共有8种基本类型,其中有4种整型.2种浮点类型.1种用于表示Unicode编码的字符单元的字符类型char和1种用 ...

  7. Java中的两种测试方法(JUnit,dbUnit)使用

    目录 1.为什么要编写单元测试? 2.Junit的使用 2.1.Junit的基本使用 2.1.1.Junit的几个注解 2.1.2.编写需要测试的类 2.1.3.在test目录下创建测试类,导入Jun ...

  8. 理解java中的两种接口

    在java 中我们常常提高接口一词.在java 中有两中接口. 第一种接口:就是指系统对外提供的所有服务,在对象中表现为public类型的方法的声明.也就是我们常常在一个类中写的public的方法了. ...

  9. 介绍java常用的两种注释类型,全网独家首发!

    第一个模块:数据库 1.1 腾讯数据库面试问题 解释ACID四大特性 原子性的底层实现 数据库宕机后恢复的过程 如何保证事务的ACID特性 MySQL日志类型 这5个题目相对来说是比较普遍的,这里我就 ...

最新文章

  1. 【细品架构12/100】架构漫谈系列脑图
  2. Docker 使用Dockerfile构建tomcat镜像
  3. 线性代数可以速成吗_怎么在一个晚上搞定线性代数?
  4. 操作篇 了解学习NAT实验(关于静态NAT、动态NAT、EasyIP、端口映射的配置方法))
  5. vs无法写入量的大数据_一个每天服务数万人的企业食堂:自助餐按重计价,大数据支持食材预备量...
  6. php强大的函数,PHP最强大的随机字符串生成函数
  7. (转)服务器控件三个ID
  8. Opera Unite如何架设自己的网站
  9. SwitchResX Mac屏幕分辨率调整工具
  10. ubuntu 终端透明
  11. javafx 按钮中放置图片导致大小设置失效
  12. mbedtls学习--大数运算
  13. 笔记本计算机无法上无线网络,笔记本电脑无线网络连接不上的原因和解决办法...
  14. 人机交互大作业文档预览
  15. 大数据HBase_04_01
  16. nginx死循环解决办法
  17. python tkinter 实现简易秒表计时器
  18. 数字图像处理(1)图像取样,4倍,16倍减采样,matlab实现
  19. 07 list和dict for循环遍历索引问题以及深浅拷贝
  20. 两台计算机直接相连教程,两台电脑怎么连接局域网,小编告诉你两台电脑怎么连接局域网...

热门文章

  1. Kubesphere V2.1.1安装后开启可拔插组件DevOps(2)
  2. 前向传播、反向传播——通俗易懂
  3. 原生js实现类似jq的trigger
  4. python用字典统计出现次数_python 字典(dict)列表(list),统计重复出现字典的数量...
  5. shopxo 二次开发:设置(后台登录页)背景图
  6. phpcms关于 {if} 判断后台是否上传{thumb} 缩略图 - 代码篇
  7. 有多少种 “图片格式”?
  8. 价值199的wp移植Emlog主题模板PandaPRO
  9. 简述linux虚拟内存的概念,Linux进程虚拟内存中的相关概念
  10. pb的webserver增加的方法发布后没有显示_震惊!!!Diboot 2.0.5 发布,让开发工作又快又爽...