Java包的概述
包是用来管理类的, 就像使用文件夹管理文件一样,一个项目,可以包含很多的包,每个 包中又包含很多不同的类。
同一个包中类名不能相同 ,不同的包中类名可以相同。
java.lang: Java语言的基本包, 系统会自动导入
java.util :Java提供的常用工具包
java.io: 输入/输出相关的类
package 包
说明:
● package关键字,是用来定义包的
● package定义包的语句必须作为源文件的第一条语句
● 包名的命名规则
一般使用公司域名的倒序+项目名+模块名
com.wkcto.chapter01.package01
一般所有字母都小写
● 如果把类定义在包中, 类会有一个完整类名
包名.类名
com.wkcto.chapter01.package01.Demo01
● 使用java运行程序时, 如果是完整类名,系统会在当前目录中依次查找与包名对应的文件夹, 即在当前目录中查找 com/wkcto/chapter01/package01文件夹, 在该文件夹中查找Demo01.class字节码文件
● 把类定义在包中之后,编译时,可以通过-d参数指定字节码存储的位置,如:javac -d . Test01.java 小点代表是当前目录
package com.bjpowernode.chapter0101.p1;
/**
* 1) 使用package关键字定义了一个包, 包名命名规则: 公司域名.项目名.子模块名
* 2) Demo01类的完整类名 : com.bjpowernode.chapter0101.p1.Demo01
* 3) 编译时, 通过-d参数指定生成字节码的存储位置
javac -d . Demo01.java
系统会在当前目录中依次创建与包名对应的文件夹
4) 运行程序时, 使用完整类名
java com.bjpowernode.chapter0101.p1.Demo01
系统会在当前目录中依次查找与包名对应的文件夹, 在该文件夹中查找字节码文件
*/
class Demo01 {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
使用其他包中的类
在a包中想要使用b包中的类, 前提b包中的类必须定义为公共类
在使用时,可以通过两种方式:
● 直接使用完整类名
● 先通过import导入该类,再使用
package com.bjpowernode.chapter0101.p2;
/*
* 在p2包中, 想调用p3包中的MyClass类的静态方法
1) 使用前提是, 被使用的MyClass类必须定义为public公共类
2) 在使用时, 可以直接使用完整类名 , 也可以先导入再使用
*/
import com.bjpowernode.chapter0101.p3.MyClass;
class Demo02 {
public static void main(String[] args) {
System.out.println("调用p3包中的MyClass类的静态方法!");
//可以使用完整类名访问一个类
com.bjpowernode.chapter0101.p3.MyClass.mm();
//还可以先把类导入到当前文件中,再使用
MyClass.mm();
}
}
package com.bjpowernode.chapter0101.p3;
public class MyClass{
public static void mm() {
System.out.println("我是p3包中 MyClass类的静态方法mm!");
}
}