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
相关推荐
工程师老罗34 分钟前
Image(图像)的用法
java·前端·javascript
didiplus1 小时前
Python 入门第一课:为什么选择 Python?3 分钟搭建你的第一个程序
后端
dreamxian1 小时前
苍穹外卖day11
java·spring boot·后端·spring·mybatis
swipe2 小时前
把 JavaScript 原型讲透:从 `[[Prototype]]`、`prototype` 到 `constructor` 的完整心智模型
前端·javascript·面试
问道飞鱼2 小时前
【前端知识】React 组件生命周期:从底层原理到实践场景
前端·react.js·前端框架·生命周期
CHU7290352 小时前
定制专属美丽时刻:美容预约商城小程序的贴心设计
前端·小程序
华科易迅2 小时前
Spring装配对象方法-注解
java·后端·spring
浩~~3 小时前
反射型XSS注入
前端·xss
AwesomeDevin3 小时前
AI时代,我们的任务不应沉溺于与 AI 聊天,🤔 从“对话式编程”迈向“数字软件工厂”
前端·后端·架构