java学习--包
在 Java 中,包(Package) 是用于组织类和接口的命名空间机制,主要作用是避免类名冲突、便于代码管理和维护。以下是关于 Java 包的核心知识点:
1. 包的基本概念
-
作用:
- 防止类名冲突(不同包中可以有同名类)。
- 便于按功能或模块组织代码(如
java.util用于工具类,java.io用于输入输出)。 - 控制访问权限(通过
protected和默认访问修饰符实现包内可见性)。
-
命名规范:
- 通常使用小写字母,采用反转的域名作为前缀(避免全局冲突),例如
com.company.project.module。 - 包名对应文件系统的目录结构(如
com.example.demo对应目录com/example/demo)。
- 通常使用小写字母,采用反转的域名作为前缀(避免全局冲突),例如
2. 包的声明
- 在 Java 源文件的第一行使用
package语句声明包,格式:package com.example.utils; // 声明当前类属于com.example.utils包 - 若未声明
package,类会被放入默认包(无名包),不推荐在实际开发中使用(易冲突)。
3. 类的导入(使用其他包的类)
当需要使用其他包中的类时,有两种方式:
-
全类名访问:直接使用 “包名。类名”,例如:
java.util.Date date = new java.util.Date(); -
import 语句:在类定义前导入所需类,简化代码:
import java.util.Date; // 导入单个类 import java.util.*; // 导入java.util包下的所有类(不推荐,可能冲突)public class Test {Date date = new Date(); // 可直接使用类名 } -
静态导入:导入类的静态成员(方法或变量):
import static java.lang.Math.PI; // 导入Math类的静态变量PI import static java.lang.Math.max; // 导入Math类的静态方法maxpublic class Test {double circleArea = PI * 2 * 2; // 直接使用PIint maxNum = max(3, 5); // 直接使用max }
4. 包与访问权限
Java 的访问修饰符与包的关系:
public:所有类可见。protected:本类、子类、同包类可见。- 默认(无修饰符):仅本包类可见。
private:仅本类可见。
5. 常见系统包
Java 标准库提供了许多常用包:
java.lang:核心类(如String、Math),自动导入,无需显式声明。java.util:工具类(如ArrayList、HashMap、Date)。java.io:输入输出类(如File、InputStream)。java.net:网络编程类(如Socket、URL)。java.awt/javax.swing:GUI 编程类。
6. 包的实际应用
- 项目结构:通常按模块划分包(如
controller、service、dao、entity)。 - Jar 包管理:多个类文件打包成
.jar文件时,包结构会被保留,便于分发和引用。
总结:包是 Java 中组织代码的核心机制,合理使用包能显著提升代码的可维护性和可扩展性,是大型项目开发的基础。
