上海:15201841284
广州:020-2989 6995
深圳:0755-23061965
武汉:027-8798 9193
西安:029-8822 8155
一个java包是一组相似类型的类,接口和子包。java中的包可以分为两种形式,内置包和用户定义包。
java中有很多内置的包,如:java
,lang
,awt
,javax
,swing
,net
,io
,util
,sql
等。
在这里,我们将详细学习创建和使用用户定义的包。
Java包的优点
java包的简单示例
package
关键字用于在java中创建一个包。
//save as Simple.java package com.yiibai; public class Simple { public static void main(String args[]) { System.out.println("Welcome to package"); } }
如何编译java包
如果您没有使用任何IDE,则需要遵循以下语法:
javac -d directory javafilename
例如
javac -d . Simple.java
-d
指定放置生成的类文件的目标位置。 您可以使用任何目录名称,如/home
(在Linux的情况下),D:/workspace
(在Windows的情况下)等。如果想保持包在同一目录,可以使用.
(点)表示当前目录。
如何运行java包程序
您需要使用完全限定(指定)名称。如:com.yiibai.Simple
等来运行类。
编译:javac -d . Simple.java
运行:java com.yiibai.Simple
输出结果如下 -
Welcome to package
-d
是一个开关,它告诉编译器放置类文件的位置,即它代表目的地。 .
(点符号)表示当前文件夹。
如何从一个包中访问另一个包?
有三种方法从包外部来访问一个包。它们分别如下 -
如果使用package.*
,那么这个包的所有类和接口都是可访问的,而不是子包。
import
关键字用于使当前包可访问的另一个包的类和接口。
导入packagename
的包的示例。
一个Java文件:A.java
,在 pack
包下。
//save by A.java package pack; public class A{ public void msg(){System.out.println("Hello");} }
另一个Java文件:B.java
,在 mypack
包下,下面看看它是如何引用 pack
包中的 A.java
这个类。
//save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } }
执行上面代码,输出结果如下 -
Hello
如果要导入package.classname
,那么只有这个包的类声明为可访问的。
通过导入package.classname
的包的示例
以下是 A.java
文件中的代码 -
//save by A.java package pack; public class A{ public void msg(){System.out.println("Hello");} }
以下是 B.java
文件中的代码 -
//save by B.java package mypack; import pack.A; class B { public static void main(String args[]) { A obj = new A(); obj.msg(); } }
执行上面代码,输出结果如下 -
Hello
如果使用完全限定名,那么只有这个包的声明类将可访问。现在没有必要导入,但是需要在每次访问类或接口时使用完全限定名。
它通常用于两个包具有相同类名的情况。 java.util
和java.sql
包包含Date
类。
通过导入完全限定名称的包的示例
创建一个Java文件:A.java
,其代码如下所示 -
//save by A.java package pack; public class A { public void msg() { System.out.println("Hello"); } }
创建另一个Java文件:B.java
,其代码如下所示 -
//save by B.java package mypack; class B { public static void main(String args[]) { pack.A obj = new pack.A();// using fully qualified name obj.msg(); } }
执行上面代码,得到以下结果 -
Hello
注意:如果导入包,则不会导入子包。
如果导入包,则将导入该包的所有类和接口,但不包括子包的类和接口。 因此,您还需要导入子包。
注意:程序的序列必须先是包,然后再导入类。
包内的包称为子包。创建它用以进一步分类包。
举个例子,Sun Microsystem定义了一个名为java
的包,其中包含了很多类,比如System
,String
,Reader
,Writer
,Socket
等。 Reader
和Writer
类用于输入/输出操作,Socket
和ServerSocket
类用于网络等等。 所以,Sun已经将java包子类化为子包,如:lang
,net
,io
等,并将输入/输出相关类放在io
包中,将Server
和ServerSocket
类放在net
包中等等。
注:定义包的标准是
domain.company.package
,例如:com.yiibai.bean
或org.apache.dao
。
子包示例
package com.yiibai.core; class Simple { public static void main(String args[]) { System.out.println("Hello subpackage"); } }
编译执行的命令:javac -d . Simple.java
运行执行的命令:java com.yiibai.core.Simple
Hello subpackage
如何将类文件发送到另一个目录或驱动器?
有一个场景,想要把A.java
源文件的类文件放在C
盘的classes
文件夹中。 例如:
首先在 E:/source
目录中创建 A.java
文件,如下代码 -
//save as Simple.java package mypack; public class Simple { public static void main(String args[]) { System.out.println("Welcome to package"); } }
编译:
E:/sources> javac -d c:/classes Simple.java
运行:
要在E:/source
目录运行此程序,需要设置类文件所在目录的类路径。
e:/sources> set classpath=c:/classes;.; e:/sources> java mypack.Simple
另一种方式运行这个程序通过 -classpath切换java:
-classpath
切换可以与javac
和java
工具一起使用。
要在E:/source
目录运行此程序,可以使用java的-classpath
选项,告诉在哪里查找类文件。 例如:
e:/sources> java -classpath c:/classes mypack.Simple
执行上面代码,得到以下结果 -
Welcome to package
加载类文件或jar文件的方式
有两种方法用来临时和永久加载类文件。
加载临时类文件
-classpath
开关选项永久加载类文件
jre/lib/ext
文件夹中。规则:在java源文件中只能有一个公共类,它必须以公共类的名称保存。
//save as C.java otherwise Compilte Time Error class A { } class B { } public class C { }
如何将两个公共类放在包中?
如果想把两个公共类放在同一个包中,有两个java源文件都包含一个公共类,只需保持包名称相同即可。 例如:
文件:A.java
,代码如下所示 -
//save as A.java package yiibai; public class A{}
文件:B.java
,代码如下所示 -
//save as B.java package yiibai; public class B{}
更多精彩内容以及学习资料,尚学堂论坛bbs.bjsxt.com免费下载。
北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
咨询电话:400-009-1906 / 010-56233821
面授课程: JavaEE+微服务+大数据 大数据+机器学习+平台架构 Python+数据分析+机器学习 人工智能+模式识别+强化学习 WEB前端+移动端+服务端渲染
地址:陕西省西安市高新区西安软件园西区创新信息大厦A座三层尚学堂
电话:029-88228155 / 18291433445
山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702
武汉学区地址:武汉市东湖高新区光谷金融港B22栋11楼
咨询电话:027-87989193
网址:http://www.cssxt.com/
咨询电话:0731-83072091
深圳校区地址:深圳市宝安区航城大道U8智造产业园U6栋3楼
咨询电话:0755-23061965 / 18898413781
上海尚学堂校区地址:上海市浦东新区城丰路650号
咨询电话:021-67690939
广州校区地址:广州市天河区车陂街道大岗路5号中侨广场2栋321室(四号线车陂站D出口,或brt车陂站)
咨询电话:18948349646
保定招生办公室
地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室
电话:15132423123