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

小万哥
• 阅读 309

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,关注后即可获取最新文章推送

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

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Spring Boot的@Service和@Autowired和@ComponentScan注解
SpringBoot的@Service和@Autowired和@ComponentScan注解SpringBoot项目的Bean装配默认规则是根据Application类(SpringBoot项目入口类)所在的包位置从上往下扫描,即只扫描该类所在的包及其子包。1.如果需要扫描其上层包中的类,则将其移动到其上层包中2.使用@ComponentSc
Wesley13 Wesley13
3年前
Java中不同包下类与类之间的访问
Java中不同包下类与类之间的访问(1)我们多次使用一个带包的类,都需要加包的全路径,非常的麻烦,这个时候,Java就提供了导包的功能,提供了一个关键字import。(2)格式:import包名.包名....包名.类名;这种方式导入的是:到类的名称。另一种:imp
Stella981 Stella981
3年前
Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误
1:Hbase启动hbaseshell运行命令报ClasspathcontainsmultipleSLF4Jbindings.错误,是因为jar包冲突了,所以对于和hadoop的jar包冲突的,可以将其他jar包删除,如果你不确定是否删除正确,可以将其他的jar包复制备份或者修改名称,确保操作以后失败了,还可以找回。SLF4J:Cl
Wesley13 Wesley13
3年前
Java 包(package)
  Java包(package)  为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。  包的作用  1把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。  2如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该
Wesley13 Wesley13
3年前
Java package 包的命名规范。
Java的包名都有小写单词组成,类名首字母大写;包的路径符合所开发的系统模块的定义,比如生产对生产,物资对物资,基础类对基础类。以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现。   由于Java面向对象的特性,每名Java开发人员都可以编写属于自己的JavaPackage,为了保障每个JavaPackage命名的唯一
Wesley13 Wesley13
3年前
Java 日期与时间
Java的日期Java没有内置的日期类,但可以导入java.time包,这个包中包含了许多类,可用于处理日期和时间。例如:<table<tbody<tr<thstyle"width:25%"Java类</th<thstyle"width:75%"描述</th</tr<tr<td<code
Stella981 Stella981
3年前
Golang自定义包总结
近日在学习Golang的自定义包的创建方式,产生了一些经验,因此以这篇文章作为记录。我们通过import语句将自定义包加入到我们项目main函数中,import语句后面的参数应该是文件夹的名称,和自定义包的package的名称或者自定义包里面的文件名称没有关系,例如文件的结构目录如下:!输入图片说明(https://static.
Wesley13 Wesley13
3年前
Go单元测试编写的五个建议
测试驱动开发是保持高代码质量的好方法,同时保护自己免于回归,并向自己和其他人证明自己的代码完成了预期的工作。这里有五个技巧和窍门可以改善你的测试。把你的测试放在一个不同的包里Go坚持同一个文件夹中的文件属于同一个包,除了_test.go文件。将测试代码移出软件包,可以让您编写测试,就好像您是软件包的真正用户。你不能
小万哥 小万哥
8个月前
Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间
Java用户输入(Scanner)简介Scanner类用于获取用户输入,它位于java.util包中。使用Scanner类要使用Scanner类,请执行以下步骤:1.导入java.util.Scanner包。2.创建一个Scanner对象,并将其初始化为S
京东云开发者 京东云开发者
3个月前
实际上手体验maven面对冲突Jar包的加载规则
一、问题背景相信大家在日常的开发过程中都遇到过Jar包冲突的问题,emm,在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发,各种第三方包之间可能会存在依赖关系,不同