java中有两种包的导入机制,总结如下:
单类型导入(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类的地方如下
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语句看起来很长。
分享到:
相关推荐
Java包导入机制是Java编程语言中的一个重要组成部分,它允许开发者从不同的源代码组织结构中引入所需的类和接口。本文将深入探讨两种主要的导入方式:单类型导入和按需类型导入,并讨论它们的工作原理和使用场景。 ...
- Java的`java.io`和`java.nio`包提供了丰富的文件操作API,如读写文件、创建目录等,用于处理导入导出过程中的临时文件或结果文件。 7. **异常处理**: - 在自动化导入导出过程中,必须充分考虑可能出现的异常,...
JavaTools是一款基于Java开发的数据导入导出工具,主要用于数据库管理和数据迁移工作。它提供了一种简单易用的图形用户界面,使得非编程人员也能轻松处理数据的导入与导出任务。在更新后的版本v1.0.5中,开发者对...
这里我们关注的焦点是“java+导入的数据库jar包”,这通常指的是Java应用程序为了连接到数据库,如MySQL、Oracle、SQL Server等,而引入的JDBC(Java Database Connectivity)驱动库。JDBC是Java平台中用于与各种...
在Java编程环境中,实现Excel数据的导入是一项常见的任务,尤其在数据处理、报表生成或数据分析等领域。Apache POI是一个流行的库,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。本篇...
总结,这个“java_poi导入excel通用工具类”结合了Apache POI的强大功能,Java的反射机制,以及自定义注解的灵活性,为Java开发者提供了一种高效、可定制的Excel数据导入解决方案。通过这样的工具类,我们可以轻松地...
下面将详细介绍Java包的使用及其相关知识点。 首先,我们来看一下Java包的定义和作用: 1. **定义**:Java包是一组相关的类和接口的集合,它们被封装在一起,形成一个命名空间。每个包都有一个唯一的名称,通常是...
### Java中的包机制详解 #### 引言 Java的包机制是其编程体系中的核心概念之一,它不仅有助于代码的组织与管理,还确保了Java的跨平台特性得以实现。包(Package)作为Java的基础组成部分,对理解Java编程至关重要...
1. **单个对象赋值**:工具类可能设计了一个方法,接收一个Java对象和Excel中的某一单元格数据,通过反射机制将单元格的值设置到对象的对应属性上。这样,你可以轻松地从Excel表格中读取数据并映射到业务对象中。 2...
源码分享提供了直接导入IDEA(IntelliJ IDEA)的便利,这是一款广泛使用的Java集成开发环境,以其高效、智能的代码编辑、调试和项目管理功能而闻名。通过导入这些源码,读者可以在实践中学习书中的例子,更好地理解...
### Java大批量导入Excel:多线程加分片处理详解 #### 概述 在实际工作中,经常需要批量处理大量的Excel数据。当面对成千上万甚至百万级别的数据时,简单的单线程处理方式往往无法满足效率的需求。为了解决这个...
在Java中调用Kettle,我们需要导入相关的jar包,这些包通常包括: 1. `kettle-engine.jar`: 包含了执行Kettle转换和工作流的核心类。 2. `kettle-core.jar`: 提供了Kettle的基础功能和数据类型。 3. `kettle-api....
在Java编程中,导入Excel表格是一项常见的任务,特别是在数据处理、数据分析或系统集成等领域。Excel文件通常用于存储结构化数据,而Java作为一种强大的后端语言,提供了多种方式来读取和操作这些数据。本篇文章将...
### JAVA包的引入问题详解 #### 一、背景介绍 在Java编程中,包(package)是一种组织类和接口的方式,可以有效地避免命名冲突,并且能够提高代码的可维护性。本文将详细介绍Java中的包是如何引入的,以及在实际操作...
在Java编程环境中,"java excel 导入"通常是指使用Java处理Excel文件,将数据从Excel导入到数据库,如MySQL。这个过程涉及到多个关键知识点,包括文件读取、数据解析、数据库连接以及事务处理等。以下是对这些核心...
这个压缩包包含了`sun`包和其他相关源码,`sun`包是Java早期版本中包含的一些核心库,提供了对Java平台内部机制的访问。然而,由于版权和稳定性的考虑,`sun`包在较新的Java版本中被隐藏或移除,因此能够获取并研究...
本工具是基于Java反射机制实现的通用Excel导入导出类,它提供了便捷的方式来读取和写入Excel文件,适用于多种场景。下面我们将深入探讨这个工具的工作原理、使用方法以及相关的Java Excel处理知识。 1. **Java反射...
3. 异常处理:Java提供了异常处理机制,通过try-catch-finally语句块捕获并处理运行时错误,保证程序的健壮性。 4. 集合框架:Java集合框架包括List、Set、Queue和Map等接口及其实现类,如ArrayList、HashSet、...
而Java包(Package)就是用来实现这种逻辑分组的一种机制。通过将相关的类放入同一个包中,不仅可以避免命名冲突,还能有效地管理和组织代码。 #### 二、Java包的概念 Java包是一种组织类和接口的方式,它允许...