Java 基础教程

包(package)

Java语言中,包(package)就是由若干相关类组成的一个分组,引入包机制的目的在于实现类的访问控制和命名空间管理。如果一个包中的类数目太多,可以继续进行细分,即包中再次创建包,这样具有层次性的包更合理,也更推荐。在 JDK 的内置 API 中提供了大量定义好的类,它们就是按照功能进行分包的,其中常用的包如下:

(1)java.lang  包含了Java语言程序设计的基础类

(2)java.awt  包含用于创建图形用户界面和绘制图形图像的相关类

(3)java.util  包含了集合、日期、国际化和各种实用工具类

(4)java.io  包含可提供数据输入/输出相关的类

(5)java.net  提供用于实现 java 网络编程相关的功能类

(6)java.sql  提供用于 java 访问数据库相关的功能类

注意,每一个包都是一个独立的命名空间(Naming Space),不同包中可以定义同名的类,而不必担心命名冲突。创建在包中的包称为子包。

创建包

Java 语言使用关键字 package 来声明包,其语法如下:

package pkgName[.pkgName2[.pkgName3...]];

其中,pkgName、pkgName2、pkgName3 为包名,按照 Java 编码习惯,包名应该是名词性单词或词组,所有字母小写。多层级包使用圆点进行分割,如:com.hxstrive.test 表示 com 包下面有子包 hxstrive,hxstrive 子包中又有子包 test。如果类需要使用包,package 语句必须作为 Java 源文件的第一条语句,前面可以有注释或空行,但不能有其他语句。如果没有指定 package 语句,则类属于同一个无名包。

示例:声明一个 com.hxstrive.test 包,并且在该包下面创建 Demo 类。

package com.hxstrive.test;

public class Demo {

    public void show() {
        System.out.println("Demo show()");
    }

}

如果 Demo 类位于 D:/demo 目录下面,怎样去编译它们呢?有两种方式:

方式一:进入到 D:/demo 目录,运行 javac Demo.java 命令:

D:\demo>javac Demo.java

编译时生成的 Demo.class 文件会默认保存在当前源码路径下,需要我们手动创建名为 com/hxstrive/test 的目录路径,然后将 Demo.class 拷贝到 test 目录。

方式二:进入到 D:/demo 目录,运行 D:\demo> javac -d D:\demo Demo.java 命令:

D:\demo> javac -d D:\demo Demo.java

其中,“-d D:\demo”是传给 Java 编译器的参数,用于指定将此次编译的 .class 文件保存到 D:\demo 目录下。如果源文件中有 package 语句,则编译时会自动在 D:\demo 目录下面创建与包名同名的文件夹路径 com/hxstrive/test,即 Demo.class 的完整路径为 D:\demo\com\hxstrive\test\Demo.class。

导入包中的类

如果要使用有名包中的类,首先将该字节码文件所在的顶层包对应的文件夹所在的路径加入到 CLASSPATH 变量中,然后在 Java 源文件开头使用 import 语句引入所需要的类。

import 语句语法格式如下:

import pkg[.pkg2...].(classname | *)

其中,pkg、pkg2 是需要引入类所在的包层次。classname 是要引入的具体类名,* 表示引入该包中所有的类。

示例:

package com.hxstrive;

import com.hxstrive.test.Demo;

public class TestPackage {

    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.show();
    }

}
// 输出结果:
//Demo show()

注意,如果需要引入的类和当前类在同一个包下面,则不需要 import 语句,例如:

package com.hxstrive.test;

public class TestPackage {

    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.show();
    }

}
// 输出结果:
//Demo show()

编译&运行

源文件放在一起

如果在 D:\demo 目录下面存在 Demo.java(包 com.hxstrive.test) 和 TestPackage.java(包 com.hxstrive)源文件,使用 javac -d D:\demo *.java 命令进行编译:

D:\demo>javac -d D:\demo *.java

编译后,将在 D:\demo 目录下生成 class,如下:

D:\demo\com\hxstrive\test\Demo.class

D:\demo\com\hxstrive\TestPackage.class

紧接着运行 java com.hxstrive.TestPackage 命令运行 TestPackage 程序:

D:\demo>java com.hxstrive.TestPackage
Demo show()

源文件按包层次存放

如果在 D:\demo 目录下面存在如下源文件:

D:\demo\com\hxstrive\test\Demo.java

D:\demo\com\hxstrive\TestPackage.java

此时,我们使用  javac -d d:\demo com/hxstrive/test/Demo.java 编译 Demo.java

D:\demo> javac -d d:\demo com/hxstrive/test/Demo.java

编译成功后,生成 D:\demo\com\hxstrive\test\Demo.class 字节码文件。

然后,使用  javac -d d:\demo com/hxstrive/TestPackage.java 编译 TestPackage.java 

D:\demo> javac -d d:\demo com/hxstrive/TestPackage.java

编译成功后,生成 D:\demo\com\hxstrive\TestPackage.class 字节码文件。

最后,使用 java 命令运行 TestPackage,如下:

D:\demo> java com.hxstrive.TestPackage
Demo show()
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号