知识大全 Java包导入机制的研究与解析

Posted 类型

篇首语:万事须己运,他得非我贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java包导入机制的研究与解析相关的知识,希望对你有一定的参考价值。

Java包导入机制的研究与解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  java中有两种包的导入机制 总结如下

  单类型导入(single type import) 例如import java io File;

  按需类型导入(type import on demand) 例如 import java io *;

  关于这两种导入类型大家各有所爱 众说纷纭 这里分析一下这两种导入类型的大致工作原理供大家参考

  单类型导入比较好理解 仅仅导入一个public类或者接口 而对于按需类型导入 有人误解为导入一个包下的所有类 其实不然 看名字就知道 他只会按需导入 也就是说它并非导入整个包 而仅仅导入当前类需要使用的类

  既然如此是不是就可以放心的使用按需类型导入呢?非也 非也 因为单类型导入和按需类型导入对类文件的定位算法是不一样的 java编译器会从启动目录(bootstrap) 扩展目录(extension)和用户类路径下去定位需要导入的类 而这些目录进仅仅是给出了类的顶层目录 编译器的类文件定位方法大致可以理解为如下公式

  顶层路径名 \\ 包名 \\ 文件名 class = 绝对路径

  对于单类型导入很简单 因为包明和文件名都已经确定 所以可以一次性查找定位

  对于按需类型导入则比较复杂 编译器会把包名和文件名进行排列组合 然后对所有的可能性进行类文件查找定位 例如

     package ;   import java io *;   import java util *;

  当你的类文件中用到了File类 那么可能出现File类的地方如下

  File \\\\ File类属于无名包 就是说File类没有package语句 编译器会首先搜索无名包

   File \\\\ File类属于当前包

  java lang File \\\\编译器会自动导入java lang包

  java io File

  java util File

  需要注意的地方就是 编译器找到java io File类之后并不会停止下一步的寻找 而要把所有的可能性都查找完以确定是否有类导入冲突 假设此时的顶层路径有三个 那么编译器就会进行 * = 次查找

  注意 如果在查找完成后 编译器发现了两个同名的类 那么就会报错 要删除你不用的那个类 然后再编译

  了解以上原理之后 我们可以得出这样的结论 按需类型导入是绝对不会降低Java代码的执行效率的 但会影响到Java代码的编译速度

  查看JDK的源代码就知道SUN的软件工程师一般不会使用按需类型导入 因为使用单类型导入至少有以下两点好处

   提高编译速度

   避免命名冲突 (例如 当你import java awt *;import java util *后 使用List的时候编译器将会出编译错误)

cha138/Article/program/Java/hx/201311/25713

相关参考

知识大全 Java绘图机制

Java绘图机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JAVA的绘图功能非常丰富绘图包

知识大全 Java反射机制深入研究

Java反射机制深入研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java反射是Java语

知识大全 Java中异常机制的深入研究

Java中异常机制的深入研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于本文旨在探讨Ja

知识大全 java应用程序远程登录linux并执行其命令

  在这个网址下载一个调用ssh和scp命令的jar包  然后就可以写程序了将上面的jar包导入MyEclipse下面是一个类的实例代码  packagehh;  importjavaioBuffer

知识大全 line camera表情包如何导入line camera使用

linecamera表情包如何导入linecamera使用没有那种导入功能的,毕竟没有真的购买,下载来的贴图可以通过“剪切”来实现贴图的功能。将下载来的贴图解压到手机,编辑图片时,点击下方贴图栏、贴图

知识大全 Java 1.5 中新的静态导入特性

Java1.5中新的静态导入特性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  要导入一个类或接

知识大全 实现JS脚本导入JAVA类包

实现JS脚本导入JAVA类包  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java堆栈溢出的机制与原理

Java堆栈溢出的机制与原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java堆栈溢出的出

知识大全 浅析Java与C#的事件处理机制(一)

浅析Java与C#的事件处理机制(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java与

知识大全 Java的ClassLoader与Package机制

Java的ClassLoader与Package机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!