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语句看起来很长。
转自:http://www.simpleframework.net/simple/news/v.jsp?__news_beanId=0457345649_01078129255&__news_Id=2123
分享到:
相关推荐
Java包导入机制是Java编程语言中的一个重要组成部分,它允许开发者从不同的源代码组织结构中引入所需的类和接口。本文将深入探讨两种主要的导入方式:单类型导入和按需类型导入,并讨论它们的工作原理和使用场景。 ...
1. **安装与导入**:首先,你需要将下载的"poi" jar包导入到你的Java项目中。在Maven项目中,可以通过在pom.xml文件中添加依赖来实现: ```xml <groupId>org.apache.poi <artifactId>poi <version>4.1.2...
总的来说,这份"Java Spring 源码解析 Xmind 思维导图"涵盖了Spring框架的核心组件和设计理念,帮助开发者从源码层面理解Spring的运行机制。通过这样的学习,可以提升开发者对Spring的理解,从而更好地利用Spring...
下面将详细介绍如何使用Java进行GRIB2文件的读取和解析。 1. **理解GRIB2文件结构**: GRIB2文件由多个消息组成,每个消息包含一组相关的气象数据。消息由一个固定长度的头部(Header)和可变长度的数据部分(Data...
Java中的Apache POI库是用于读取和...通过以上策略,可以有效地处理Java POI在导入大数据量Excel时的内存溢出问题,同时提高程序的运行效率。在实践中,应根据具体场景选择合适的优化方法,确保程序的稳定性和性能。
【Java解析国标hj212协议】是关于环保污染物数据交换的一种标准,它定义了环保监测数据的传输格式和交互方式。在Java开发环境中,解析这种协议通常涉及到网络通信、数据编码与解码、XML或JSON处理等多个技术领域。...
本文将深度解析Java中的包机制,包括其引入原因、与平台的衔接方式以及如何正确使用包。 #### 一、为何Java中需要“包”? Java中引入“包”的主要目的是满足其跨平台特性的需求。由于Java资源以文件形式组织,...
总结来说,"java_poi导入excel通用工具类V0915" 是一个强大且灵活的工具,可以帮助开发者高效地完成Java环境中Excel数据的导入工作。通过使用反射、注解等技术,它可以适应各种复杂的导入需求,并且能够处理含有公式...
### Java大批量导入Excel:多线程加分片处理详解 #### 概述 在实际工作中,经常需要批量处理大量的Excel数据。当面对成千上万甚至百万级别的数据时,简单的单线程处理方式往往无法满足效率的需求。为了解决这个...
1. **定义**: 在Java中,包是用于对类进行分组的一种机制。通过使用包,可以将相关的类和接口放在同一个命名空间下。 2. **声明**: 如果要创建一个新的包,可以在Java源文件的第一行使用`package`关键字来声明。例如...
在Java中调用Kettle,我们需要导入相关的jar包,这些包通常包括: 1. `kettle-engine.jar`: 包含了执行Kettle转换和工作流的核心类。 2. `kettle-core.jar`: 提供了Kettle的基础功能和数据类型。 3. `kettle-api....
在Java编程环境中,"java excel 导入"通常是指使用Java处理Excel文件,将数据从Excel导入到数据库,如MySQL。这个过程涉及到多个关键知识点,包括文件读取、数据解析、数据库连接以及事务处理等。以下是对这些核心...
而Java包(Package)就是用来实现这种逻辑分组的一种机制。通过将相关的类放入同一个包中,不仅可以避免命名冲突,还能有效地管理和组织代码。 #### 二、Java包的概念 Java包是一种组织类和接口的方式,它允许...
这个资源包可能包含了在Java环境下实现Modbus RTU通信所需的工具和资料。以下是关于Modbus RTU以及如何在Java中实现它的详细知识点: 1. **Modbus协议**:Modbus是一种简单、开放的通信协议,最初由Modicon公司(现...
要使用Java反射API,首先需要导入`java.lang.reflect`包下的类。例如,`Method`类提供了方法的元数据信息,可以通过这些信息动态地调用方法。 #### 三、实际应用场景 ##### 3.1 动态代理 反射机制可以用来创建...
在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和...在导入jar包后,你可以使用库提供的类和方法来创建、解析和操作JSON对象,从而简化你的开发工作。
总结,XML解析在Java中的应用广泛且多样,包括数据交换、配置管理、对象绑定等多个场景。掌握XML解析技术,有助于提升Java开发效率和代码质量。无论选择DOM、SAX还是其他解析方式,都需要根据实际需求和性能考虑来...
在Java开发中,处理Excel数据是一项常见的任务,例如数据导入导出、报表生成等。EasyExcel是阿里巴巴开源的一款高效、易用的Java库,专门用于处理Excel文件,它以其轻量级、无内存溢出风险以及对大数据量的支持,...
总结起来,Java的Excel解析涉及到选择合适的库(如Apache POI),理解并使用其API进行文件读取、数据处理和导入,以及考虑性能优化和错误处理策略。通过这些知识,开发者可以高效地在Java项目中处理Excel文件。