今天長(zhǎng)沙牛耳教育java培訓(xùn)機(jī)構(gòu)小編為大家介紹“java包的定義和使用方法”,希望通過(guò)此文能夠讓大家熟知java包的定義和使用方法,下面就隨小編一起看看java包的定義和使用方法。
java包的定義
java包指得是一個(gè)程序的目錄,包名字只能為小寫(xiě)。
在最早的時(shí)候,如果要開(kāi)發(fā)一個(gè)程序,只需要定義一個(gè)*.java文件,然后在這個(gè)文件里編寫(xiě)所需要的類(lèi)文件,而在編譯之后程序?qū)⒅苯颖4嬖诟夸浵拢冒梢詫?shí)現(xiàn)同一個(gè)程序的拆分,即:根據(jù)我們的要求將代碼保存在不同的目錄下。
如果要定義我們的包,可以使用package關(guān)鍵字完成。
范例:定義包
package cn.mldn.demo; // 這就是一個(gè)包
public class Helo {
public static void main(String args[]) {
System.out.println("Hello world !");
}
}
如果在定義包的時(shí)候出現(xiàn)了“.”,那么就表示子目錄。如果說(shuō)類(lèi)有包的定義了,那么就必須讓其保存在特定的目錄下,不過(guò)不要自己去手工創(chuàng)建這些目錄,我們應(yīng)該使用命令自動(dòng)生成:
?。?)打包編譯:javac -d . Hello.java。
“-d”:生成目錄,根據(jù)package的定義生成。
“.”:設(shè)置保存的路徑,如果為“.”表示在當(dāng)前所在路徑下生成。
?。?)在解釋程序的時(shí)候,不要進(jìn)入到包里面解釋程序,應(yīng)該在包處面輸入類(lèi)的完整名字(包.類(lèi))。
輸入:java cn.mldn.demo.Hello
以后所有的類(lèi)都一定要定義在包之中,那么完整的類(lèi)名稱(chēng)就是“包.類(lèi)”。
java包的導(dǎo)入
使用包可以將一個(gè)完整的程序拆分為不同的文件進(jìn)行分別保存,這樣就會(huì)造成一個(gè)問(wèn)題,不同包之間有可能會(huì)進(jìn)行互相訪問(wèn),那么此時(shí)就需要使用導(dǎo)包的操作,使用import語(yǔ)句完成即可。
范例:包的導(dǎo)入,定義一個(gè)cn.mldn.util.Message的類(lèi)
package cn.mldn.util;
public class Message {
public void print() {
Systen.out.println("Hello World !");
}
}
定義一個(gè)cn.mldn.test.TestMessage的類(lèi)
package cn.mldn.test;
import cn.mldn.util.Message; // 導(dǎo)入要使用的類(lèi)
public class TestMessage{
public static void main(String args[]) {
Message msg = new Message();
msg.print();
}
}
對(duì)于程序的編譯應(yīng)該采用先編譯Message,再編譯TestMessage。
編譯:
javac -d . Message.java
javac -d . TestMessage.java
Java編譯器考慮到了作為大型程序開(kāi)發(fā)的時(shí)候,有可能會(huì)存在有多個(gè).java文件互相引用,為了解決這個(gè)問(wèn)題,提供了通配符“”:javac -d . *.java。
編譯并執(zhí)行:
javac -d . *.java
java cn.mldn.test.TestMessage
輸出結(jié)果:
Hello World !
但是發(fā)現(xiàn)在導(dǎo)入包的時(shí)候也出現(xiàn)了一個(gè)問(wèn)題,如果使用一個(gè)包中類(lèi)的時(shí)候要編寫(xiě)“import 包.類(lèi)”,那么如果要使用一個(gè)包中多個(gè)類(lèi)的時(shí)候,那么肯定要重復(fù)去編寫(xiě)“import 包.類(lèi)”,這樣很麻煩,所以此時(shí)可以使用“import 包.”的方法來(lái)代替一個(gè)包中多個(gè)類(lèi)的導(dǎo)入操作。
使用“import 包.”指的并不是全部導(dǎo)入,而是只導(dǎo)入程序里面所需要的類(lèi),所以不需要去考慮性能問(wèn)題。
但是既然出現(xiàn)了導(dǎo)包操作,那么就必須有一個(gè)重要的問(wèn)題注意,有可能同一個(gè)代碼里面會(huì)同時(shí)導(dǎo)入不同的包,并且不同的包里有可能會(huì)存在同名類(lèi)。
假如現(xiàn)在有兩個(gè)類(lèi):cn.mldn.util.Message和org.lxh.Message。由于某種需要,要同時(shí)導(dǎo)入以上兩個(gè)包。
范例:TestMessage導(dǎo)入兩個(gè)包
package cn.mldn.test;
// 導(dǎo)入兩個(gè)同名稱(chēng)的類(lèi)
import cn.mldn.util.Message;
import org.lxh.Message;
public class TestMessage{
public static void main(String args[]) {
// 這種情況只能加上類(lèi)的包名,使用完整名稱(chēng)
cn.mldn.util.Message msg = new cn.mldn.util.Message();
msg.print();
}
}
系統(tǒng)常見(jiàn)包
Java本身提供了大量的程序開(kāi)發(fā)包(除了Java自己提供的,還有許多第三方提供了開(kāi)發(fā)包)。在Java的開(kāi)發(fā)有如下一些常見(jiàn)的系統(tǒng)包:
java.lang:包含了String、Object、Integer等類(lèi),從JDK1.1開(kāi)始此包自動(dòng)導(dǎo)入。
java.lang.reflect:反射開(kāi)發(fā)包。
java.util:Java的工具包,提供了大量的工具類(lèi),比如鏈表。
java.util.regex:正則工具包。
java.text:國(guó)際化處理程序包。
java.io:進(jìn)行輸入、輸出處理以及文件操作。
java.net:網(wǎng)絡(luò)編程開(kāi)發(fā)包。
java.sql:數(shù)據(jù)庫(kù)程序開(kāi)發(fā)包。
java.awt、javax.swing:圖形界面的開(kāi)發(fā)包,javax指拓展,主要功能是進(jìn)行單機(jī)版程序界面編寫(xiě)。
(1)JDK1.0的時(shí)候主要推出的是awt開(kāi)發(fā)包,但是這個(gè)開(kāi)發(fā)包使用了大量的windows圖形函數(shù)。
(2)JDK1.2的時(shí)候隆重推出了javax.swing開(kāi)發(fā)包,是一個(gè)輕量級(jí)(Java自己不使用windows),Java從此更名為java2。
java.applet:Applet程序開(kāi)發(fā)包(已經(jīng)不用了)。
Applet指的是在網(wǎng)頁(yè)上嵌套的程序,可以使用Applet做一個(gè)動(dòng)態(tài)的效果。
Applet是最早的Java出現(xiàn)的形式,功能類(lèi)似于今天的Javascript。
package cn.mldn.demo;
import java.applet.*;
import java.awt.*;
public class MyApplet extends Applet {
public void paint(Graphics g) {
g.drawLine(10, 10, 100, 100);
}
}
編譯之后并不能表示其可以正常的使用,還需要編寫(xiě)html代碼進(jìn)行引用。
解釋?zhuān)宏P(guān)于Applet與Application的區(qū)別
Applet指的是在網(wǎng)頁(yè)上嵌套的程序,是采用繪圖的方式完成的顯示,而Application是在主方法中運(yùn)行,通過(guò)命令行執(zhí)行(如果要再實(shí)現(xiàn)同樣的功能,都使用Canvas繪圖——HTML5)。
jar命令
在任何一個(gè)項(xiàng)目里面,一定會(huì)存在有大量的.class文件,那么如果將這些.class文件直接交給用戶使用,那么會(huì)造成文件越多,并且會(huì)導(dǎo)致程序非常沒(méi)有結(jié)構(gòu),所以在交付用戶使用之前,會(huì)使用jar命令針對(duì)于*.class進(jìn)行壓縮,并且壓縮的都是以包為主的。
jar命令
范例:使用jar,將原來(lái)生成的class類(lèi)刪除
javac -d . Message.java
jar -cvf my.jar cn
這樣就形成了一個(gè)jar文件。生成的my.jar文件并不能夠直接使用,必須配置CLASSPATH才可以加載。
SET CLASSPATH=. ;位置my.jar
javac -d . TestMessage.java
java cn.mldn.test.TestMessage
輸出結(jié)果:
Hello World !
在以后的開(kāi)發(fā)之中需要大量的使用第三方的jar文件,那么所有的jar文件必須配置CLASSPATH,否則不能夠使用。最簡(jiǎn)單的配置方式可以在環(huán)境屬性中完成。
總結(jié)
1、以后開(kāi)發(fā)的程序一定要有包的存在。
2、如果包沖突的時(shí)候要寫(xiě)上完整的類(lèi)名稱(chēng)。
3、以后使用第三方j(luò)ar文件必須配置CLASSPATH。
以上就是長(zhǎng)沙牛耳教育java培訓(xùn)機(jī)構(gòu)小編介紹的“java包的定義和使用方法”的內(nèi)容,希望對(duì)大家有幫助,更多java最新資訊請(qǐng)繼續(xù)關(guān)注長(zhǎng)沙牛耳教育java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。
相關(guān)免費(fèi)視頻教程推薦
零基礎(chǔ)java教程下載——包的定義:http://www.bjpowernode.com/xiazai/2597.html