课时100:包的定义

简介: 课时100介绍了Java中包的概念与作用,以及包的定义和使用方法。包用于组织和管理类文件,避免类名冲突,提升代码可维护性和协作效率。通过`package`关键字声明包,采用反向域名命名确保唯一性。编译时使用`javac -d`命令自动生成目录结构,简化开发流程。运行程序时需带上包名,格式为“包.类”。

课时100:包的定义

摘要:

1. 包的概念与作用

2. 包的定义与使用

 

01. 包的概念与作用

 

在 Java 编程中,包(Package)是一个重要的概念。包的主要作用是对类进行组织和管理。在实际项目开发中,所有的类都必须放在包中。对于大型项目而言,通常需要多位开发者共同完成,因此不可避免地会遇到类名冲突的问题。


例子:类名冲突

假设我们有一台服务器,服务器上有两位开发者:王建和李旭。王建花了三天三夜编写了一个 Java 程序,功能是输出 Harvard,他将程序编译后生成了 A.class 文件并上传到服务器根目录。随后,李旭花了 10 秒钟编写了一个程序,功能是输出 我比你胖,他也将程序编译为 A.class 并上传到同一目录。由于服务器不允许同名文件共存,李旭的文件覆盖了王建的文件。


当王建运行程序时,发现输出变成了 我比你胖,于是他重新上传了自己的 A.class,但李旭也再次上传了他的文件,导致两人的程序不断互相覆盖,最终服务器上的 A.class 文件内容不稳定,产生了严重冲突。这种冲突的根本原因是缺乏有效的文件管理机制。如果两位开发者使用包来管理文件,例如王建将程序放在 com.wangjian 包中。


路径为 com/wangjian/A.class,而李旭将程序放在 com.lixu 包中,路径为 com/lixu/A.class,即使文件名相同,由于位于不同目录,也不会互相覆盖,从而避免冲突。通过使用包,可以有效组织和管理文件,避免命名冲突,提高代码的可维护性和协作开发的效率。

image.png

在操作系统中,同一个目录下不允许存在相同的程序类文件。然而,在实际开发中,很难保证类名不会重复。为了解决这一问题,可以将程序类文件存放在不同的目录下,不同的目录中可以存放相同名称的文件。这个目录在 Java 中被称为包。包的本质就是一个目录。


02. 包的定义与使用

2.1 包的定义

范例1:定义包

新建文件夹

image.png

新建Java文件,命名为 Hello.java

image.png

代码如下:

package cn.mldn.demo; //定义包,其中“.“ 表示分割子目录(子包)
public class Main {
    public static void main(String[] args) {
   System.out.println("Hello World!");
    }
}

总结:在Java中,包的定义是通过Package关键字来实现的。每个Java文件的开头都必须声明其所属的包。包的命名通常采用反向域名的形式,以确保唯一性。例如, cn.mldn.demo 表示一个包路径,其中 cn.mldn 是域名,Demo 是项目或模块的名称。

2.2 打包编译

在 Java 程序开发中,如果程序中使用了包,程序编译后的结果就必须将 “*.class” 文件保存在指定的目录中。手动创建这些目录结构可能会非常繁琐。最好的做法是使用 javac 命令的-d选项来自动生成目录结构。进行打包编译处理 : javac -d.Hello.java

(1“-d”:表示要生成目录,而目录的结构就是package定义的结构;

(2)“.”:表示在当前所在的目录中生成程序类文件;

image.png

 

在程序执行时,必须带上包名执行程序类,代码为:java cn.mldn.deno.Hello,从此以后,完整的类名称是“包.类”名称。

运行结果如下:

image.png

 

在Java开发中,包是一个非常重要的概念。通过包,我们可以有效地组织和管理类文件,避免类名冲突,并提高代码的可维护性。每个   Java 类都必须放在包中,并且 Package声明必须放在类的首行。通过javac -d命令,我们可以自动生成包的目录结构,简化开发流程。

相关文章
解决idea中的Alt+回车键用不了的问题(超详细)
目的:解决idea中的Alt+回车键用不了的问题
1911 0
解决idea中的Alt+回车键用不了的问题(超详细)
|
7月前
|
Windows
Windows程序的数字签名证书怎么申请
Windows程序的数字签名证书申请流程包括:准备企业资料(营业执照、税务登记证等),提交申请表及企业资料。经过初审、实名认证和二审后,等待1-5个工作日审核结果。审核通过后,CA机构颁发证书并通过邮件或邮寄方式发送。收到证书后按指南安装并使用签名工具对程序进行数字签名,确保软件完整性和可信度。注意证书有效期、管理和兼容性问题。
|
10月前
|
机器学习/深度学习 人工智能 算法
【AI系统】AI 框架基础介绍
本文介绍了AI算法、神经网络及AI框架的基础概念,探讨了神经网络的作用、训练目的以及AI框架如何简化模型设计、训练与验证过程。文章还概述了AI框架的发展历程和技术演进,强调了国内外主要AI框架的特点及其对AI技术发展的推动作用。
338 2
【AI系统】AI 框架基础介绍
|
10月前
|
SQL Java 数据库连接
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
585 13
|
KVM 虚拟化
虚拟化技术概述及KVM环境安装
关于虚拟化技术概述及KVM环境安装的教程,涵盖了虚拟化的定义、分类、管理工具,以及KVM的系统需求、安装步骤和使用指南。
423 11
虚拟化技术概述及KVM环境安装
|
12月前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
724 6
|
11月前
|
分布式计算 资源调度 Hadoop
【赵渝强老师】基于ZooKeeper实现Hadoop HA
本文介绍了如何在4个节点(bigdata112、bigdata113、bigdata114和bigdata115)上部署HDFS高可用(HA)架构,并同时部署Yarn的HA。详细步骤包括环境变量设置、配置文件修改、ZooKeeper集群启动、JournalNode启动、HDFS格式化、ZooKeeper格式化以及启动Hadoop集群等。最后通过jps命令检查各节点上的后台进程,确保部署成功。
366 0
|
设计模式 测试技术 C#
WPF/C#:在WPF中如何实现依赖注入
WPF/C#:在WPF中如何实现依赖注入
380 0
|
Java Linux
解决OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0...
解决OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0...
2365 0