java package是什么?怎么用?相信有很多人都不太了解,今天小編為了讓大家更加了解package,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。
Java中的一個(gè)包(package)就是一個(gè)類庫單元,包內(nèi)包含有一組類,它們?cè)趩我坏拿Q空間之下被組織在了一起。這個(gè)名稱空間就是包名。
那么Java包(package)怎么用呢?
可以使用import關(guān)鍵字來導(dǎo)入一個(gè)包。例如使用import java.util.*就可以導(dǎo)入名稱空間java.util包里面的所有類。所謂導(dǎo)入這個(gè)包里面的所有類,就是在import聲明這個(gè)包名以后,在接下來的程序中可以直接使用該包中的類。
例如:
import java.util.* public class SingleImport { public static void main(Strin[] args) { ArrayList list=nwe ArrayList(); } }
這里ArrayList就是java.util包中的一個(gè)類,但是由于對(duì)程序使用了import關(guān)鍵字加載了java.util包,所以這里并沒有見到對(duì)ArrayList類的定義和聲明,也沒有見到該類前面有什么限定名,就可以直接使用這個(gè)類。
我們之所以要導(dǎo)入包名,就是要提供一個(gè)管理名稱空間的機(jī)制。
我們知道,如果有兩個(gè)類A類和B類都含有一個(gè)具有相同特征標(biāo)記(參數(shù)列表)的方法f(),即便在同一段代碼中同時(shí)使用這兩個(gè)方法f(),也不會(huì)發(fā)生沖突,原因就在于有兩個(gè)不同的類名罩在前面作為限定名,所以兩個(gè)方法即便同名也不回發(fā)生沖突。但是如果類名稱相互沖突又該怎么辦呢?假設(shè)你編寫了一個(gè)Apple類并安裝到了一臺(tái)機(jī)器上,而該機(jī)器上已經(jīng)有一個(gè)其他人編寫的Apple類,我們?cè)撊绾谓鉀Q呢?
因?yàn)槟闳绻肱宄慌_(tái)機(jī)器上到底已經(jīng)安裝了那些類,并不是一件很容易的事情,所以名字之間總是有存在潛在的沖突的可能。在Java中對(duì)名稱空間進(jìn)行完全控制并為每個(gè)類創(chuàng)建唯一的標(biāo)識(shí)符組合就成為了非常重要的事情。如果你要編寫對(duì)于同一臺(tái)機(jī)器上共存的其他Java程序友好的類庫或程序的話,就需要考慮如何防止類名稱之間的沖突問題。
當(dāng)編寫一個(gè)Java源代碼文件時(shí),此文件通常被稱為編譯單元。
每個(gè)編譯單元都必須有一個(gè)后綴名.java,而在編譯單元內(nèi)有且僅有一個(gè)public類,否則編譯器就不會(huì)接受。
該public類的名稱必須與文件的名稱相同(包括大小寫,但不包括后綴名.java)。如果在該編譯單元之中還有額外的類的話,那么在包之外的世界是無法看見這些類的,因?yàn)樗鼈儾皇莗ublic類,而且它們主要用來為主public類提供支持。
當(dāng)編譯一個(gè).java文件(即一個(gè)編譯單元)時(shí),在.java文件中的每個(gè)類都會(huì)有一個(gè)輸出文件,而該輸出文件的名稱與.java文件中每個(gè)類的名稱相同,只是多了一個(gè)后綴名.class。因此在編譯少量.java文件之后,會(huì)得到大量的.class文件。
每一個(gè).java文件編譯以后都會(huì)有一個(gè)public類,以及任意數(shù)量的非public類。因此每個(gè).java文件都是一個(gè)構(gòu)件,如果希望許許多多的這樣的構(gòu)件從屬于同一個(gè)群組,就可以在每一個(gè).java文件中使用關(guān)鍵字package。而這個(gè)群組就是一個(gè)類庫。
以上就是java package是什么?怎么用的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎來創(chuàng)新互聯(lián)行業(yè)資訊!