Java入门:理解Java包(package)的概念
1. 概述
1.1 为什么需要包这个概念
package可以简单理解为创建文件夹,windows中不能存储同类型同名称的文件,java也是。
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
1.2 包的作用
- 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
- 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
- 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
2. 包的使用
2.1 创建包
- 包申明必须在源文件的第一行,每个源文件只能有一个包申明,这个文件中的每个类型都应用于它
- 如果一个源文件中没有包申明,那么其中的类、函数、枚举、注释等将被放在一个无名的包(unnamed package)中
包语句的语法格式为:
package pkg1 [.pkg2[. pkg3...]];
2.2 package目录结构
示例:一个Test.java里面的内容:
1. package net.java.util; 2. public class Test{ 3. 4. ... 5. }
其在文件夹中的存储路径为net/java/util/Test.java,同时生成的class文件在net/java/util目录下。
类放在包中会有两种主要结果:
- 包名成为类名的一部分
- 包名必须与相应的字节码所在的目录结构相吻合
还是上面的示例,正确的类名是:net.java.util.Test.
2.3 使用import导入包
在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为:
import package1[.package2…].(classname|*);
导入其实和直接写在java文件中是一样的,编译器最后都会把他们写在一起。就像C中的define一样,编译的时候会展开。
3. 常见的系统包
在java中,除了我们自定义包外,java本身还提供了许多常用的系统包,如下表所示:
包名 |
作用 |
Java.lang |
Language的缩写,包含了基本数据类型以及包装类,String类,线程类等,该包由系统默认加载(import). |
Java.lang,reflect |
反射对象包, 该包里提供关于类和对象反射信息的工具,在后续章节学习 |
Java.util |
工具包,提供日期Date类、堆栈Stack类、向量Vector类,链表LinkList类, 随机数Random类等 |
Java.util.regex |
正则工具包,用来匹配字符串 |
Java.text |
处理文本包,用来格式化日期、数字和消息,分析,搜索和排序字符串,以及迭代字符、单词、语句和换行符等 |
Java.io |
数据流包,处理文件读写、标准设备输出等 |
Java.net |
网络编程包,里面包含了Socket 类(TCP客户端,用于连接远程主机) ServerSocket类(TCP服务端,用来接受客户端套接字的连接) DatagramSocket类(UDP 端点,用于发送和接收数据包) MulticastSocket 类(是 DatagramSocket 的子类,用来处理广播) |
Java.sql |
数据库操作包,提供了与各种数据库操作的工具 |
4. 导入类的三种方式
- 通过import导入完整的类路径
import com.baidu.Test.Bus; //import后面是有分号的
- 通过import导入包路径
比喻要使用某个包的所有类,可以用通配符*, impor com.baidu.Test.*;
- 通过完整路径的方式使用类
参考链接:
https://baijiahao.baidu.com/s?id=1610064438454407570&wfr=spider&for=pc
https://www.runoob.com/java/java-package.html
https://blog.****.net/qq524752841/article/details/78089786
https://www.cnblogs.com/lifexy/p/10855188.html
下一篇: 理解Java中的包(package)
推荐阅读
-
Java 类加载器的作用 - 简介:类加载器是 Java™ 中一个非常重要的概念。类加载器负责将 Java 类的字节码加载到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模型、加载类的具体过程和线程上下文类加载器等。然后介绍了如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™ 中的应用。 类加载器是 Java 语言的一项创新,也是 Java 语言广受欢迎的重要原因之一。它允许将 Java 类动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 开始出现,最初是为了满足 Java Applets 的需求而开发的,Java Applets 需要从远程位置下载 Java 类文件并在浏览器中执行。现在,类加载器已广泛应用于网络容器和 OSGi。一般来说,Java 应用程序的开发人员不需要直接与类加载器交互;Java 虚拟机的默认行为足以应对大多数情况。但是,如果遇到需要与类加载器交互的情况,而您又不太了解类加载器的机制,就很容易花费大量时间调试异常,如 ClassNotFoundException 和 NoClassDefFoundError。本文将详细介绍 Java 的类加载器,帮助读者深入理解 Java 语言中的这一重要概念。下面先介绍一些基本概念。 类加载器的基本概念 顾名思义,类加载器用于将 Java 类加载到 Java 虚拟机中。一般来说,Java 虚拟机以如下方式使用 Java 类:Java 源程序(.java 文件)经 Java 编译器编译后转换为 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码并将其转换为 java.lang 实例。每个实例都用来表示一个 Java 类。通过该实例的 newInstance 方法创建该类的对象。实际情况可能更加复杂,例如,Java 字节代码可能是由工具动态生成或通过网络下载的。 基本上,所有类加载器都是 java.lang.ClassLoader 类的实例。下面将详细介绍这个 Java 类。 java.lang.ClassLoader 类简介 java.lang.ClassLoader 类的基本职责是根据给定类的名称为其查找或生成相应的字节码,然后根据这些字节码定义一个 Java 类,即 java.lang.Class 类的实例。除此之外,ClassLoader 还负责加载 Java 应用程序所需的资源,如图像文件和配置文件。不过,本文只讨论它加载类的功能。为了履行加载类的职责,ClassLoader 提供了许多方法,其中比较重要的方法如表 1 所示。下文将详细介绍这些方法。 表 1.与加载类相关的 ClassLoader 方法
-
入门指南:理解ASCII编码在Java中的应用
-
理解Java中的事务管理机制及其隔离级别的概念
-
深入理解Java面向对象编程(中级):多态的概念与特性详解
-
理解Java企业级开发的关键概念
-
从头开始学Java:理解字面量与变量的基础概念
-
深入理解Java中的原码、反码和补码概念
-
专为Java开发者设计:理解CPU切换、用户空间与核心空间、进程与线程间切换的概念详解(转译版)
-
理解Java运行Jar包中的两种方法:-cp和jar的区别
-
理解Java包:如何导入和使用包中的类?