182. Java 包 - 创建和使用 Java 包

182. Java 包 - 创建和使用 Java 包

Java 中,包(Package 是组织类和接口的一种机制。它可以帮助我们将相关的类型组织在一起,避免命名冲突,并使代码更加模块化和可维护。


🚀 创建自定义包

要定义一个包,需要在 Java 源文件的顶部,使用 package 语句:

java 复制代码
package com.example.shapes;

public class Circle {
    public double radius;
    public Circle(double r) {
        radius = r;
    }
}

🧠 注意

  • package 语句必须是文件中的第一个非注释、非空白行。
  • 包名通常使用 全小写字母
  • 使用公司反向域名作为前缀是常见的命名规范(例如 com.example),以避免与其他开发者的包发生冲突。

🧭 使用其他包中的类

如果你想在另一个包中使用上面定义的 Circle 类,有三种方式可以做到:

✅ 方法一:使用完全限定名

java 复制代码
com.example.shapes.Circle c = new com.example.shapes.Circle(5.0);

这种方式清晰明了,不需要额外的导入语句。但写起来比较啰嗦,不推荐在大量使用时采用。


✅ 方法二:导入指定类

java 复制代码
import com.example.shapes.Circle;

public class App {
    public static void main(String[] args) {
        Circle c = new Circle(5.0);
    }
}

这是最常见的使用方式,推荐在你只需要使用某几个类时使用。


✅ 方法三:导入整个包

java 复制代码
import com.example.shapes.*;

public class App {
    public static void main(String[] args) {
        Circle c = new Circle(5.0);
        // 还可以使用该包中其他类型,如 Square、Rectangle(如果有)
    }
}

使用 * 表示导入该包中所有的类(不包括子包)。适合你频繁使用某个包中多个类的情况,但过度使用可能会增加类名冲突的风险。


📁 包结构与文件路径

Java 包名与文件系统路径是一一对应的,例如:

java 复制代码
com/example/shapes/Circle.java

编译后生成的 .class 文件也会被放在相应目录中:

java 复制代码
com/example/shapes/Circle.class

🧠 也就是说,包名决定了类文件的存储路径,这也是 Java 项目组织代码文件的基础。


📦 设置 CLASSPATH(类路径)

如果你将类文件保存在项目以外的路径,JVMJava 编译器可能找不到这些类。此时你就需要设置 CLASSPATH 环境变量。

比如:

java 复制代码
export CLASSPATH=.:/path/to/my/classes

含义:

  • . 表示当前目录
  • /path/to/my/classes 表示你自己的类文件存放路径

💡现代 Java 项目通常使用 构建工具 (如 MavenGradle),它们会自动处理 classpath 的配置,无需手动设置。


✅ 小结

操作 说明 示例
创建包 使用 package 语句 package com.example.tools;
使用类(完全限定名) 不需要 import,但繁琐 new com.example.shapes.Circle()
使用类( import单个类) 简洁明了 import com.example.shapes.Circle;
使用类( import整个包) 导入多个类方便 import com.example.shapes.*;
包路径对应 包名与文件路径一一对应 com/example/shapes/Circle.java
设置类路径 用于指定 class 文件查找路径 CLASSPATH=.:/your/classes/dir
相关推荐
想用offer打牌2 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
KYGALYX3 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅4 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法4 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端