概念

包指的是一个程序的目录。在最早的时候如果要开发一个程序,只需要定义个*.java文件,然后再该文件中编写所需的类,编译之后程序将直接保存在当前目录下,而利用包可以实现同一个程序的拆分。

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。为这些类型提供访问保护和命名空间管理的功能。

包语句的语法格式为:

package pkg1[.pkg2[.pkg3…]];

示例:

package net.java.util;
public class hello{
    public static void main(String args[]){
        System.out.println("hello world");
    }
}

那么它的路径应该是 net/java/util/hello.java 这样保存的。 package(包) 的作用是把不同的 java 程序分类保存,更方便的被其他 java 程序调用。

最好不要自己手工创建这些目录,应该使用命令自动生成,如下:

  • 编译: javac -d . hello.java

    “-d”:表示生成目录,根据package的定义生成。

    “.” :表示保存的路径,如果为"."表示在当然所在的路径下生成。

类都应当定义在包中,那么完整的类名就是:"包.类"。

包的作用

  1. 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  2. 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  3. 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

包的导入

为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用 import 语句可完成此功能。

在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为:

import package1[.package2…].(classname|*);

使用“包.*”通配符,表示导入程序里面所需要的类,而不是全部导入。

如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。

常用系统包

  1. java.lang: 包含了String、object、Interger等类。从jdk1.1之后,此包会自动导入。
  2. java.lang.reflect:反射包;
  3. java.util: java的工具包,提供了大量工具类。
  4. java.util.regex: 正则工具包。
  5. java.text: 国际化处理包。
  6. java.io: 进行输入、输出处理,以及文件处理。
  7. java.net: 网络编程开发包。
  8. java.sql: 数据库程序开发包。
  9. java.applet: Applet程序开发包,已废弃。Applet是嵌套在网页上的java程序,采用绘图的方式完成网页的显示,实现一些动态效果,随着时间的发展已经不再使用了。
  10. java.awt、javax.swing:图形界面开发包。主要进行单机版程序界面开发。

    • jdk1.0的时候推出了awt开发包,但是该包大量使用了windows api,导致程序缺乏可移植性。
    • jdk1.2的时候推出了javax.swing开发包,采用了java自己编写的api,是一个轻量级的GUI工具包。

jar 命令

在任何一个项目中肯定会存在大量的.class文件,如果将这些.class文件直接交付,会导致文件过多,而且程序非常没有结果,所以在交付用户使用之前,会使用jar命令将包中的class文件压缩成一个文件。

生成的jar文件不能直接使用,需要将其文件路径配置到CLASSPATH中,如果使用第三方jar文件,也必须配置。

补充:CLASSPATH是java程序解释类文件时所使用的加载路径。


shenlanzifa
26 声望1 粉丝

熟悉c++,go,node.js,python,java等多种语言。搞过VR,AR项目,写过手机APP,撸过TensorFlow,开发过各种系统服务端,熟悉oracle,mysql,mongodb等关系或非关系型数据库,docker,微服务也游刃有余,近期在潜心研究...