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
指定我们存放类文件的路径,再在后面选择你要运行的类文件
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析