Java学习之包
一、包:就是类的命名空间(在文件系统中的表现形式就是文件夹)
二、代码编写规则
1、写在程序文件的第一行
2、格式:package 包名[.包名1.包名2......]
类的全名称 包名.类名
例如:
1 package mypack; //包 2 class PackageDemo 3 { 4 public static void main(String[] args) 5 { 6 System.out.println("Hello Package!"); 7 } 8 }
编译(javac -d . Java文件--【-d .】代表当前目录下存放.class文件):
运行(java 类的全名称(包名.类名)):
三、包与包之间访问
1、class文件在不同目录
1 package mypack; //包 2 class PackageDemo 3 { 4 public static void main(String[] args) 5 { 6 packa.DemoA d=new packa.DemoA(); 7 d.show(); 8 System.out.println("Hello Package!"); 9 } 10 }
被访问的类
1 package packa; 2 3 //被访问的包中的类访问权限必须是public 4 public class DemoA 5 { 6 //被访问的包中的类的方法访问权限必须是public 7 public void show() 8 { 9 System.out.println("DemoA Show run"); 10 } 11 }
编译
编译DemoA
编译PackageDemo
设置class文件所在目录set classpath=.;XXXX(小技巧classpath的值第一个值为当前目录,以分号【;】分开)
2、访问方式
①、通过类的全名称(以上的例子都是)
②、通过import(包的导入),import 就是导入包中的类,可以使用通配符(*)
1 package mypack; //包 2 3 import packb.DemoB;//导入了packb包中的DemoB类 4 class PackageDemo 5 { 6 public static void main(String[] args) 7 { 8 //1.访问不同包中的类,需要写类的全名称 9 packa.DemoA d=new packa.DemoA(); 10 d.show(); 11 DemoB b=new DemoB(); 12 b.show(); 13 System.out.println("Hello Package!"); 14 } 15 }
1 package packb; 2 3 public class DemoB 4 { 5 public void show() 6 { 7 System.out.println("DemoB Show run"); 8 } 9 }
四、jar
jar:java 的压缩文件
1 package jarpack; 2 class JarPackDemo 3 { 4 public static void main(String[] args) 5 { 6 System.out.println("Hello Jar Package!"); 7 } 8 }
编译
运行
运行jar命令
示例:
# 创建包含两个类文件的名为 classes.jar 的档案:
jar --create --file classes.jar Foo.class Bar.class
# 使用现有的清单创建档案, 其中包含 foo/ 中的所有文件:
jar --create --file classes.jar --manifest mymanifest -C foo/ .
# 创建模块化 jar 档案, 其中模块描述符位于
# classes/module-info.class:
jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0
-C foo/ classes resources
# 将现有的非模块化 jar 更新为模块化 jar:
jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0
-C foo/ module-info.class
# 创建包含多个发行版的 jar, 并将一些文件放在 META-INF/versions/9 目录中:
jar --create --file mr.jar -C foo classes --release 9 -C foo9 classes
# 创建包含两个类文件的名为 classes.jar 的档案:
jar --create --file classes.jar Foo.class Bar.class
# 使用现有的清单创建档案, 其中包含 foo/ 中的所有文件:
jar --create --file classes.jar --manifest mymanifest -C foo/ .
# 创建模块化 jar 档案, 其中模块描述符位于
# classes/module-info.class:
jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0
-C foo/ classes resources
# 将现有的非模块化 jar 更新为模块化 jar:
jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0
-C foo/ module-info.class
# 创建包含多个发行版的 jar, 并将一些文件放在 META-INF/versions/9 目录中:
jar --create --file mr.jar -C foo classes --release 9 -C foo9 classes
要缩短或简化 jar 命令, 可以在单独的文本文件中指定参数,
并使用 @ 符号作为前缀将此文件传递给 jar 命令。
并使用 @ 符号作为前缀将此文件传递给 jar 命令。
示例:
# 从文件 classes.list 读取附加选项和类文件列表
jar --create --file my.jar @classes.list
# 从文件 classes.list 读取附加选项和类文件列表
jar --create --file my.jar @classes.list