Java 包和 API

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

包分为两类:

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

内置包

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

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

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

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

// 导入单个类
import package.name.Class;
// 导入整个包
import package.name.*;

导入类

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

// 导入 Scanner 类
import java.util.Scanner;

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

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

// 使用 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.util 包
import java.util.*;

用户定义的包

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

└── root
└── mypack
└── MyPackageClass.java

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

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

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

C:\Users\Your Name>javac MyPackageClass.java

然后编译包:

C:\Users\Your Name>javac -d . MyPackageClass.java

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

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

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

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

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

C:\Users\Your Name>java mypack.MyPackageClass

输出将是:

This is my package!

一些额外的说明:

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

最后

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

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

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

Java 包和 API 深度解析:组织代码,避免命名冲突的更多相关文章

  1. Java 8 Optional 类深度解析

    Java 8 Optional 类深度解析 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只 ...

  2. Java基础常用类深度解析(包含常见排序算法)

    目录 一.工具类 1.1.工具类的设计 1.1.1.公共静态方法 1.2.单例模式 二.包装类 2.1.基本类型的包装类 2.1.1.Integer 2.1.1.1.Integer >> ...

  3. Java 8 Optional类深度解析

    身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...

  4. JAVA网络爬虫WebCollector深度解析——爬虫内核

    WebCollector爬虫官网:https://github.com/CrawlScript/WebCollector 技术讨论群:250108697 怎样将爬虫内核导入自己的项目? 1.进入爬虫官 ...

  5. Java 8 Optional类深度解析(转载)

    身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...

  6. [转]Java 8 Optional类深度解析(null处理)

    原文链接:http://www.importnew.com/6675.html 本文由 ImportNew - 高俊阳 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 身为一 ...

  7. Java 8 Optional类深度解析(转)

    经常会遇到这样的问题,调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. 新版本的Java,比如J ...

  8. Java基础(三) String深度解析

    String可以说是Java中使用最多最频繁.最特殊的类,因为同时也是字面常量,而字面常量包括基本类型.String类型.空类型. 一. String的使用 1. String的不可变性 /** * ...

  9. Java调用Kotlin程序深度解析

    异常: 在之前我们已经学习在Kotlin中的所有异常都是运行期的,而不像Java分为运行期和非运行期,下面用代码来演示一下,先建一个Java的异常: 然后在Kotlin中来调用一下该Java中的方法 ...

  10. Java 8 Stream API

    Java 8 Stream API JDK8 中有两大最为重要的改变.第一个是 Lambda 式:另外 Stream API(java.util.stream.*) Stream 是 JDK8 中处理 ...

随机推荐

  1. 谈一谈如何使用etcd中的事务

    本文内容来源于自己学习时所做的记录,主要来源于文章最后的参考链接,如有侵权,请联系删除,谢谢! etcd 是一个 key/value 类型的数据库.既然我们需要存储数据,必然会面临这样一个需求,即希望 ...

  2. 【Azure Redis】Redis服务负载达到100%后的影响及有何优化方法

    问题描述 Redis服务负载达到100%后的影响及有何优化方法 问题解答 Redis的负载达到100% 意味着 Redis 服务器繁忙,无法跟上请求,导致客户端发送出来的请求超时. 常规情况下有一下几 ...

  3. 【Azure 环境】Windows中安装Python azure-eventhub-checkpointstoreblob-aio模块时出错 ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory:

    问题描述 在使用Python代码接受EventHub的消息时,根据文档要求安装azure-eventhub-checkpointstoreblob-aio模块时,出现了如下错误: ERROR: Cou ...

  4. CodeCraft-22 and Codeforces Round 795 (Div. 2)C. Sum of Substrings(分类讨论、贪心)

    感觉分类讨论的能有点弱.遇到复杂一点的分类讨论的题目,代码就写的巨长. 首先观察到处在中间位置的1对答案的贡献是11,具体在中间哪个位置是没有关系的. 只有两端的两个位置是比较特殊的 \(1位置处的1 ...

  5. Zabbix与乐维监控对比分析(三)——对象管理篇

    大家好,我是乐乐.今天就不更新zabbix6.0的使用教程了.在前面的文章中,我们详细介绍了Zabbix与乐维监控在架构.性能.Agent管理.自动发现.权限管理等方面的对比分析,本篇是Zabbix对 ...

  6. 【预训练语言模型】 使用Transformers库进行BERT预训练

    基于 HuggingFace的Transformer库,在Colab或Kaggle进行预训练. 鉴于算力限制,选用了较小的英文数据集wikitext-2 目的:跑通Mask语言模型的预训练流程 一.准 ...

  7. Vue 长文本组件(有展开更多按钮)实现 附源码及使用

    原文地址:Vue 长文本组件(有展开更多按钮) | Stars-One的杂货小窝 最近项目需要优化长文本的显示,如果长文本过长,固定显示几行并显示一个展开更多的按钮,点击按钮即可把隐藏的文本显示出来 ...

  8. SpringSecurity(7)--- Security+JWT搭建简单的授权服务器和资源服务器

    Security+JWT搭建简单的授权服务器和资源服务器 之前有两篇博客分别将来介绍了 OAuth 2.0 和 JWT 1.OAuth 2.0详解 2.SpringSceurity(6)---JWT详 ...

  9. PAT 甲级1005【1005 Spell It Right】

    用JAVA可以用BigInteger解决. import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu ...

  10. CodeForces Hello 2024 个人题解(A~C)

    A. Wallet Exchange 时间限制: 1秒 内存限制: 256兆 输入: 标准输入 输出: 标准输出 Alice and Bob are bored, so they decide to ...