Java 包、包的编译
Java 包
Java 采用包的概念来对相关的类进行管理。
包可以避免名称冲突,并且通过包名进行分类后,代码的维护性会有所提高。
包本质上就是一个个文件夹

以上都是 Java 的内置包,除了内置包,Java还支持自定义包。
Import
import 可以从指定的包中导入指定的类,如:
import java.util.Scanner;
或导入指定的包内所有内容
import java.util.*;
同个包下的类直接访问即可,无需导入。
Package
package用于声明该代码存在于哪个包的那个位置,使用Javac编译时.class就会放在相对应的位置
一个类中只能声明一次package且只能在第一行代码声明
└── root
└── pack_name
└── MyPackClass.java
如:
package pack_name;
public class MyPackClass {
String str = "This is My Package Class";
}
包的命名规则及规范
命名规则:
- 只能包含数字、字母、下划线、
.,不能以数字开头,不能是关键字或保留字
命名规范:
-
一般是
com.公司名称.项目名称.业务模块名如:com.sina.crm.user用户模块com.sina.crm.order订单模块com.sina.crm.utils工具类
-
其文件分布格式是这样的:
-
└── com └── sina └── crm └── user └── ***.java... └── order └── ***.java └── utils └── ***.java
-
编译
发现很多教学,都是直接教使用IDE进行编译,并没有对手动编译进行说明,但是作为一名初学者,现阶段不建议使用集成度过高的IDE,你可以不使用手动编译,但你必须知道如何手动编译
对于使用了自建包的代码,有必要知道如何在不使用 IDE 的情况下手动编译
编译时需要 javac 从包开始直到源文件位置 如:com/sina/user/***.java
如果不指定编译后的位置那么会将这个源文件使用到的所有包都进行编译,并存放到对应的源文件路径下,如下图

如果使用 javac -d 指定了路径这会在指定的路径生成与源文件一样的包,里面存放编译好的 .class 文件
使用java -d编译需要手动编译每一个包里的类如:
# CLASS_PATH 为你要将编译好的 .class 文件储存的路径
java -d CLASS_PATH com/user/Test.java com/xiaoming/Dog.java com/xiaoqiang/Dog.java
这样有些麻烦
如果你是Linux系统,可以使用find命令,找出所有是.java后缀的路径,然后将输出重定向到一个文件,我们再使用javac -d CLASS_PATH @java_path.list这是另外一种解决思路,如:
# 先进入到存放包的目录
cd 存放包的上一级目录
find ./ -name *.java > java_path.list
java -d CLASS_PATH @java_path.list
图解:
进入到存放包的目录

寻找.java源代码路径

这就是我们找到的源代码路径

开始编译

可以看到,编译完成后在你指定存放类文件的路径下会生成一个目录,我们查看一下这个目录

可以看到,它与我们原文件的储存样式是一模一样的
这是原文件

尝试运行
我们使用java -classpath指定我们存放类文件的路径,再在后面选择你要运行的类文件


浙公网安备 33010602011771号