Java 包和 API 深度解析:组织代码,避免命名冲突
Java 包和 API
Java 中的包 用于将相关的类分组在一起。可以将其视为文件目录中的一个文件夹。我们使用包来避免名称冲突,并编写更易于维护的代码。
包分为两类:
- 内置包(来自 Java API 的包)
- 用户定义的包(创建自己的包)
内置包
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 深度解析:组织代码,避免命名冲突的更多相关文章
- Java 8 Optional 类深度解析
Java 8 Optional 类深度解析 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只 ...
- Java基础常用类深度解析(包含常见排序算法)
目录 一.工具类 1.1.工具类的设计 1.1.1.公共静态方法 1.2.单例模式 二.包装类 2.1.基本类型的包装类 2.1.1.Integer 2.1.1.1.Integer >> ...
- Java 8 Optional类深度解析
身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...
- JAVA网络爬虫WebCollector深度解析——爬虫内核
WebCollector爬虫官网:https://github.com/CrawlScript/WebCollector 技术讨论群:250108697 怎样将爬虫内核导入自己的项目? 1.进入爬虫官 ...
- Java 8 Optional类深度解析(转载)
身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...
- [转]Java 8 Optional类深度解析(null处理)
原文链接:http://www.importnew.com/6675.html 本文由 ImportNew - 高俊阳 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 身为一 ...
- Java 8 Optional类深度解析(转)
经常会遇到这样的问题,调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. 新版本的Java,比如J ...
- Java基础(三) String深度解析
String可以说是Java中使用最多最频繁.最特殊的类,因为同时也是字面常量,而字面常量包括基本类型.String类型.空类型. 一. String的使用 1. String的不可变性 /** * ...
- Java调用Kotlin程序深度解析
异常: 在之前我们已经学习在Kotlin中的所有异常都是运行期的,而不像Java分为运行期和非运行期,下面用代码来演示一下,先建一个Java的异常: 然后在Kotlin中来调用一下该Java中的方法 ...
- Java 8 Stream API
Java 8 Stream API JDK8 中有两大最为重要的改变.第一个是 Lambda 式:另外 Stream API(java.util.stream.*) Stream 是 JDK8 中处理 ...
随机推荐
- win终端利器-Cmder的安装使用
cmder 官网:https://cmder.app/ 安装 直接选择full版本下载,完成后解压即可 启动 直接双击Cmder.exe 如果每次都进入到 Cmder 解压目录双击 Cmder.exe ...
- JAVA对象生命周期(三)-对象的销毁
目录 从引用说起 指针直接引用 句柄引用 优缺点 如何判断对象死亡 引用计数法 可达性分析法 垃圾收集算法 标记-清除算法 复制算法 复制算法--优化 有关年轻代的JVM参数 标记-整理算法 分代收集 ...
- 【Azure 环境】如何解决Principal 2330xxxxxxxxxxxxxxxxxxxx31efc5 does not exist in the directory xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx问题
问题描述 在使用 Key Vault 和 Azure CLI 管理存储帐户密钥的官方文档中,其中有一步是"向 Key Vault 授予对你的存储帐户的访问权限", 其中CLI命令中 ...
- 从真实案例出发,全方位解读 NebulaGraph 中的执行计划
本文整理自 NebulaGraph 核心开发 Yee 在直播<聊聊执行计划这件事>中的主题分享.分享视频参见 B站:https://www.bilibili.com/video/BV1Cu ...
- 代码随想录算法训练营第七天| LeetCode 454.四数相加II 15. 三数之和 18. 四数之和
454.四数相加II 卡哥建议:本题是使用map巧妙解决的问题,好好体会一下 哈希法如何提高程序执行效率,降低时间复杂度,当然使用哈希法会提高空间复杂度,但一般来说我们都是舍空间换时间, 工业开发也是 ...
- ElasticSearch基础介绍(1)
## 1. Elasticsearch基本介绍 官网:https://www.elastic.co/cn Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引 ...
- Codeforces(1500板刷)
目录 写在前面 1. A. Did We Get Everything Covered?(构造.思维) 题目链接 题意 题解 代码 总结 2 F. Greetings(离散化+树状数组) 题目链接 题 ...
- CF1362C Johnny and Another Rating Drop(二进制、复杂度考虑)
看完数据范围\(n\in[1,1e18]\)就可以先猜一下要不是可以直接推公式,不能暴力去做,更不能遍历一遍,又看到这种2进制的题目,要猜是不是\(log\)级别的复杂度. 可以依次考虑每一位 \(所 ...
- Docker常用基础命令详解
Docker常用基础命令详解 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 http://w ...
- python基础三(数据类型)
一 引子 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(整形,长整形,浮点型,复数 ...