Java 包和 API 深度解析:组织代码,避免命名冲突

Java 包和 API

Java 中的包 用于将相关的类分组在一起。可以将其视为文件目录中的一个文件夹。我们使用包来避免名称冲突,并编写更易于维护的代码。

包分为两类:

  1. 内置包(来自 Java API 的包)
  2. 用户定义的包(创建自己的包)

内置包

Java API 是一个预先编写的类库,可以在 Java 开发环境中免费使用。

该库包含用于管理输入、数据库编程等等的组件。完整的列表可以在 Oracle 的网站上找到:

该库分为包和类。这意味着您可以导入单个类(以及其方法和属性),或者导入包含属于指定包的所有类的整个包。

要使用库中的类或包,您需要使用import关键字:

java 复制代码
// 导入单个类
import package.name.Class;
// 导入整个包
import package.name.*;

导入类

如果找到要使用的类,例如Scanner类(用于获取用户输入),请编写以下代码:

java 复制代码
// 导入 Scanner 类
import java.util.Scanner;

在上面的示例中,java.util 是一个包,而 Scanner 是 java.util 包的一个类。

要使用 Scanner 类,请创建该类的对象,并使用 Scanner 类文档中提供的任何可用方法。在我们的例子中,我们将使用 nextLine() 方法,该方法用于读取一整行:

java 复制代码
// 使用 Scanner 类获取用户输入
import java.util.Scanner;

class MyClass {
  public static void main(String[] args) {
    Scanner myObj = new Scanner(System.in);
    System.out.println("Enter username");

    String userName = myObj.nextLine();
    System.out.println("Username is: " + userName);
  }
}

导入包

有许多包可供选择。在前面的例子中,我们使用了 java.util 包中的 Scanner 类。该包还包含日期和时间设施、随机数生成器和其他实用类。

要导入整个包,请以星号(*)结束句子。以下示例将导入 java.util 包中的所有类:

java 复制代码
// 导入整个 java.util 包
import java.util.*;

用户定义的包

要创建自己的包,您需要了解 Java 使用文件系统目录来存储它们。就像计算机上的文件夹一样:

java 复制代码
└── root
  └── mypack
    └── MyPackageClass.java

要创建一个包,请使用 package 关键字:

java 复制代码
// MyPackageClass.java
package mypack;
class MyPackageClass {
  public static void main(String[] args) {
    System.out.println("This is my package!");
  }
}

将文件保存为 MyPackageClass.java,并编译它:

java 复制代码
C:\Users\Your Name>javac MyPackageClass.java

然后编译包:

java 复制代码
C:\Users\Your Name>javac -d . MyPackageClass.java

这会强制编译器创建"mypack"包。

  • -d 关键字指定了保存类文件的目标位置。您可以使用任何目录名称,例如 c:/user(Windows),或者如果要将包保留在同一目录中,可以使用点号".",就像上面的例子一样。

注意:包名应以小写字母写入,以避免与类名冲突。

在上面的例子中编译包时,将创建一个名为"mypack"的新文件夹。

要运行 MyPackageClass.java 文件,请写入以下内容:

java 复制代码
C:\Users\Your Name>java mypack.MyPackageClass

输出将是:

java 复制代码
This is my package!

一些额外的说明:

  • 可以使用多个 import 语句来导入多个类或包。
  • 可以使用 static import 语句导入静态方法和变量。
  • 可以使用包名来组织代码,例如将所有与数据库相关的类放在一个包中,将所有与 GUI 相关的类放在另一个包中。
  • 使用包可以提高代码的清晰度和可维护性。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关推荐
贰先生9 小时前
Xiuno BBS 审计之问题16:get_magic_quotes在 PHP 8.0 被移除
后端
爱跳舞的烤冷面10 小时前
自学嵌入式第N天(Linux篇——文件编程)
java·开发语言·前端
IT_陈寒10 小时前
Vite的热更新突然失效,原来我忽略了这个配置
前端·人工智能·后端
怪奇云呼军10 小时前
闪电智能VoiceAgent 如何管理呼入、接听、桥接和挂断状态?
java·前端·网络·数据库·人工智能
云浪10 小时前
Milvus + RAG 实战:《红楼梦》问答助手
前端·人工智能·后端
Escalating_xu10 小时前
【Linux】进程间通信:从匿名管道、FIFO 到共享内存、消息队列与信号量
java·linux·面试
IT机器猫10 小时前
RabbitMQ基础二
java·spring boot·分布式·spring cloud·log4j·rabbitmq·springamqp
阿部多瑞 ABU10 小时前
告别手工核图:基于 .NET + MuPDFCore 的 CAD 等轴测 PDF 材料表提取与新旧版本对比实战
后端·算法·ui·pdf·c#
卷心菜的学习路10 小时前
基于 Spring Cloud Tencent 元数据路由实现个人开发泳道,告别频繁部署
java·spring cloud
卷无止境11 小时前
FastAPI 的 WebSocket 装了些什么
后端·python·fastapi