一、包(Package)的概念

作用:

避免命名冲突:不同包中可存在同名类组织管理类:将功能相关的类组织在一起(如java.util集合类)访问控制:配合访问修饰符实现封装模块化开发:便于团队协作与代码复用

命名规范:

全小写字母(如com.example.utils)域名倒序(如com.google.common)不能使用Java关键字(如int、class)

二、包的定义与使用

定义包(必须在文件首行):

// 文件路径:src/com/example/utils/StringUtil.java

package com.example.utils; // 包声明

public class StringUtil {

public static String reverse(String str) {

return new StringBuilder(str).reverse().toString();

}

}

目录结构:

src

└── com

└── example

└── utils

├── StringUtil.java

└── MathUtil.java

三、导包(import)的三种方式

导入单个类(推荐)

import com.example.utils.StringUtil;

public class Main {

public static void main(String[] args) {

System.out.println(StringUtil.reverse("Hello"));

}

}

导入整个包(谨慎使用)

import com.example.utils.*; // 导入utils包所有类

public class Main {

public static void main(String[] args) {

System.out.println(StringUtil.reverse("ABC"));

System.out.println(MathUtil.add(1, 2));

}

}

完全限定名(无需import)

public class Main {

public static void main(String[] args) {

// 直接使用包名+类名

System.out.println(com.example.utils.StringUtil.reverse("Java"));

}

}

四、特殊导包场景

静态导入(导入类的静态成员)

import static java.lang.Math.PI; // 导入常量

import static java.lang.Math.pow; // 导入静态方法

public class Circle {

double area(double radius) {

return PI * pow(radius, 2); // 直接使用

}

}

静态导入是 Java 5 引入的特性,主要作用是省略类名前缀直接访问静态成员,通过 import static 语法实现。它在特定场景下能显著提升代码的简洁性和可读性。

核心作用:

简化静态成员调用

普通导入:类名.静态成员

静态导入:直接使用静态成员

提升数学/工具类代码可读性

数学公式、常量引用等场景更接近自然书写方式

避免重复书写类名

对高频使用的静态成员(如常量、工具方法)减少冗余代码

静态导入是把双刃剑,恰当使用能使代码更简洁优雅,但滥用会导致可维护性下降。建议在常量引用、数学计算和测试断言等场景有限使用,并遵循团队编码规范。

处理同名类冲突

import com.companyA.Utils;

import com.companyB.Utils; // 错误!编译器无法区分

// 解决方案:使用完全限定名

public class Demo {

void test() {

com.companyA.Utils.doSomething();

com.companyB.Utils.doSomething();

}

}

五、Java核心包概览

Java 的标准库包含丰富的核心包,为开发者提供了强大的基础功能。

包名功能描述常用类示例java.lang语言核心类(自动导入)String, System, Mathjava.util工具类/集合框架ArrayList, HashMapjava.io输入输出操作File, InputStreamjava.net网络编程Socket, URLjava.sql数据库操作Connection, ResultSet

💡 注意:java.lang包自动导入,无需手动声明

java.lang - 语言基础包

自动导入,无需显式声明核心功能:基础类、数据类型、系统操作常用类:

Object:所有类的超类String/StringBuilder/StringBuffer:字符串处理Integer/Double/Boolean:包装类System:系统操作(如System.out.println())Math:数学运算(sqrt(), random())Thread/Runnable:多线程支持Throwable/Exception/Error:异常体系

java.util - 实用工具包

最常用的工具集合核心功能:集合框架、日期时间、随机数、正则表达式常用类:集合类:

ArrayList/LinkedList:动态数组HashMap/TreeMap:键值对存储HashSet/TreeSet:不重复集合

工具类:

Arrays:数组操作(排序、搜索)Collections:集合操作工具Objects:对象操作(判空、比较)

时间处理:

LocalDate/LocalDateTime(Java 8+)Date(旧版)/ Calendar

其他:

Random:随机数生成Scanner:输入扫描Regex:正则表达式(Pattern, Matcher)

java.io - 输入输出包

核心功能:文件操作、数据流处理

常用类:

字节流:

InputStream/OutputStreamFileInputStream/FileOutputStream

字符流:

Reader/WriterFileReader/FileWriter

缓冲流:

BufferedReader/BufferedWriterBufferedInputStream/BufferedOutputStream

其他:

File:文件/目录操作Serializable:对象序列化接口

java.net - 网络编程包

核心功能:网络通信、URL处理

常用类:

URL/URI:资源定位HttpURLConnection:HTTP连接Socket/ServerSocket:TCP套接字DatagramSocket:UDP套接字InetAddress:IP地址处理

java.sql - 数据库连接包

核心功能:JDBC数据库操作

常用接口:

Connection:数据库连接Statement/PreparedStatement:SQL执行ResultSet:结果集处理DriverManager:驱动管理

java.math - 数学计算包

核心功能:高精度数值计算

常用类:

BigInteger:任意精度整数BigDecimal:任意精度浮点数(金融计算必备)MathContext:数学运算配置

六、包的依赖关系

1.依赖关系的本质

包依赖是指一个包(或类)需要调用另一个包(或类)的功能才能正常工作。在 Java 中,这种依赖通过以下方式体现:

编译依赖:类A使用类B时,编译A需要B的字节码运行时依赖:执行时需要依赖的类必须存在于classpath传递依赖:A依赖B,B依赖C → A间接依赖C

七、示例项目结构

my-project

├── src

│ ├── com

│ │ └── company

│ │ ├── model

│ │ │ └── User.java

│ │ ├── service

│ │ │ └── UserService.java

│ │ └── util

│ │ └── DateUtil.java

│ └── Main.java

└── lib

package com.company;

import com.company.model.User;

import com.company.service.UserService;

import static com.company.util.DateUtil.getCurrentDate; // 静态导入

public class Main {

public static void main(String[] args) {

User user = new User("Alice");

UserService.register(user);

System.out.println("注册时间: " + getCurrentDate());

}

}

Copyright © 2088 1986世界杯_意大利世界杯 - zlrxcw.com All Rights Reserved.
友情链接