单类型导入(single-type-import),例如import java.io.File;
按需类型导入(type-import-on-demand),例如 import java.io.*;
关于这两种导入类型大家各有所爱,众说纷纭。这里分析一下这两种导入类型的大致工作原理供大家参考。
单类型导入比较好理解,仅仅导入一个public类或者接口。而对于按需类型导入,有人误解为导入一个包下的所有类,其实不然,看名字就知道,他只会按需导入,也就是说它并非导入整个包,而仅仅导入当前类需要使用的类。
既然如此是不是就可以放心的使用按需类型导入呢?非也,非也。因为单类型导入和按需类型导入对类文件的定位算法是不一样的。
java编译器会从启动目录(bootstrap),扩展目录(extension)和用户类路径下去定位需要导入的类,而这些目录仅仅是给出了类的顶层目录。编译器的类文件定位方法大致可以理解为如下公式:
顶层路径名 \ 包名 \ 文件名。class = 绝对路径
对于单类型导入很简单,因为包明和文件名都已经确定,所以可以一次性查找定位。
对于按需类型导入则比较复杂,编译器会把包名和文件名进行排列组合,然后对所有的可能性进行类文件查找定位。例如:
package com;
import java.io.*;
import java.util.*;
当你的类文件中用到了File类,那么可能出现File类的地方如下:
1、File \\ File类属于无名包,就是说File类没有package语句,编译器会首先搜索无名包
2、com.File \\ File类属于当前包
3、java.lang.File \\编译器会自动导入java.lang包
4、java.io.File
5、java.util.File
需要注意的地方就是,编译器找到java.io.File类之后并不会停止下一步的寻找,而要把所有的可能性都查找完以确定是否有类导入冲突。假设此时的顶层路径有三个,那么编译器就会进行3*5=15次查找。
了解以上原理之后,我们可以得出这样的结论:按需类型导入是绝对不会降低Java代码的执行效率的,但会影响到Java代码的编译速度。
查看JDK的源代码就知道SUN的软件工程师一般不会使用按需类型导入。因为使用单类型导入至少有以下两点好处:
1.提高编译速度。
2.避免命名冲突。(例如:当你import java.awt.*;import java.util.*后,使用List的时候编译器将会出编译错误)
当然,使用单类型导入会使用你的import语句看起来很长。
分享到:
相关推荐
欧柏泰克:Java包的静态导入import static和import的区别 Java中的静态导入是Java 5中引入的一项新特性,允许开发者在编写代码时更方便地使用静态方法和成员变量。下面我们来详细地了解Java中的静态导入和普通导入...
标题“像import java类一样 import js类”暗示了这篇博文主要讨论的是JavaScript中引入模块的方式,尝试模拟Java的导入机制。在JavaScript的世界里,我们通常使用`require`(Node.js环境)或`import`(ES6及以后版本...
对于JavaImport,此文件可能详细解释了如何安装、配置以及如何使用工具来导入Java类到Android项目中。 5. **DelphiExample** 这个文件夹包含了一个使用JavaImport工具的Delphi示例项目,开发者可以通过查看和运行...
标题中的"JAVA 程序 源代码 import java.applet.*;import java.awt.*"表明这段源代码涉及了Java编程语言,特别是与Applet和图形用户界面(GUI)相关的部分。`import`语句是Java中用于引入库或包的机制,以便能够使用...
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...
### Java Package与Import机制详解 #### 一、引言 对于很多刚开始接触Java编程的初学者来说,往往是从购买一本入门书籍开始他们的Java学习之旅。在这个过程中,他们可能会下载最新的Java SDK并安装在自己的电脑上...
总结,Java导入Excel主要涉及使用Apache POI库来创建、操作Excel文件,以及在Web环境中实现文件下载。在实际开发中,还需要关注性能优化,特别是处理大数据量时,以避免内存溢出等问题。同时,了解如何根据需求调整...
1、导入xml配置示例如下(见src/main/resources/import-config.xml) 2、导出xml配置示例如下(见src/main/resources/export-config.xml) 三、调用示例 1、导入:src/test/java/...
### Java认证:深入理解Java中的import使用 #### 一、Java包的概念与作用 在Java中,`package`被用来组织类(classes)和接口(interfaces)。它类似于一个文件夹结构,帮助开发者管理代码,避免类名冲突。例如,`...
本项目"ExcelImport.zip"专注于使用Java POI库处理Excel表格的导入与导出功能,具体通过读取流的方式来实现,这在大数据处理或服务器端应用中尤为常见,因为可以有效地管理内存。 首先,我们来详细了解一下Apache ...
在Java编程中,将Excel数据导入到MySQL数据库是一项常见的任务,尤其在数据处理和分析的场景下。要完成这个过程,我们需要使用特定的库来读取Excel文件,并使用JDBC(Java Database Connectivity)来与MySQL数据库...
【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 ) https://hanshuliang.blog.csdn.net/article/details/129773150 一、...
在Java编程环境中,导入Excel数据是一项常见的任务,特别是在数据分析、报表处理或系统集成等领域。Excel文件,特别是.xlsx格式(属于Microsoft Office Open XML标准)和.xls格式(属于旧版的BIFF格式),通常包含...
本主题将深入探讨如何使用Java实现Excel数据的读取和导入。主要涉及的工具有Apache POI库,它是Java中处理Microsoft Office格式文件的强大工具。 首先,我们需要了解Apache POI库。Apache POI 是一个开源项目,它...
JavaTools是一款基于Java开发的数据导入导出工具,主要用于数据库管理和数据迁移工作。它提供了一种简单易用的图形用户界面,使得非编程人员也能轻松处理数据的导入与导出任务。在更新后的版本v1.0.5中,开发者对...
### Java导入导出Excel操作(基于jxl库) #### 一、引言 在实际工作中,经常需要将数据从数据库或其他格式转换为Excel文件,或者从Excel文件中读取数据进行处理。Java作为一种广泛使用的编程语言,提供了多种库来...
本篇文章将深入探讨如何使用Java来导入并读取微软的Project文件,同时也提供了一套相关的代码示例。 首先,我们要知道微软的Project文件通常是以.mpp格式存储的,这些文件包含了项目的详细信息,如任务、资源、时间...
在protobuf中,“导入”(import)是一个关键概念,它允许你在一个.proto文件中引用另一个.proto文件中的定义。这样,你可以在多个文件之间共享消息类型、枚举或服务定义,避免代码重复,提高代码的可维护性和组织性...