java編程小白進階包的作用詳解
包的作用,1是為了防止類和方法的重名,2是為了管理眾多的java類。
步驟 1 工具包里面有很多個工具類
之前講了打印數(shù)據(jù)的方法:System.out.println,寫這么多字有點麻煩啊。那么我們不妨創(chuàng)建一個StringUtil,Util是工具的意思,里面設計一個newLine方法,用于字符串的打印。
StringUtil是一個工具類,應該放在一個叫做tool的工具包里面。這個tool就是一個文件夾,我暫時把它創(chuàng)建在D盤的根目錄。

步驟 2 StringUtil

創(chuàng)建一個StringUtil.java,不必考慮編碼的問題,現(xiàn)在肯定是ANSI,其實就是GBK,除非你用的系統(tǒng)不是簡體中文。反正它是支持中文的,用Editplus打開,敲入以下的代碼:
class StringUtil
{
public static void newLine(String msg){
System.out.println(msg);
}
}
用javac去編譯它,得到.class文件。

步驟 3 目前的情況
目錄結(jié)構(gòu)是這樣的:

我們的程序在java18文件夾,現(xiàn)在想要調(diào)用tool文件夾中的StringUtil里面的newLine方法。
修改Demo.java
class Demo {
public static void main(String[] args){
StringUtil.newLine("StringUtil -> newLine");
}
}
編譯代碼:

說是找不到符號,也難怪,JVM怎么知道有一個StringUtil類呢?
步驟 4 CLASSPATH
如果你學過java,有一定的Java基礎(chǔ),那么你一定知道CLASSPATH的大名。所謂的CLASSPATH,是class和path兩個單詞,表示“類路徑”。就是你告訴JVM,哪些文件夾是我存放類(class文件)的路徑。
這個玩意,也是需要配置環(huán)境變量的,還記得配置JDK環(huán)境變量的步驟嗎?
現(xiàn)在來配置CLASSPATH環(huán)境變量,如果不記得,可以回去看下之前的章節(jié)。

步驟 5 具體配置

我們一般都是admin用戶登錄的,所以直接新建系統(tǒng)變量,我們把D盤根目錄配置進去,還有一個句點。
D:;.;
左邊的D:\代表D盤根目錄,右邊的小句點,代表當前的那個目錄。比如你要在java18文件夾里面去java一下Demo,那么JVM得需要知道當前的目錄是java18文件夾。
CLASSPATH這玩意,你要么不配置,不配置就默認是當前目錄,一旦配置了,就別忘記加個小點號。
我怕大家不明白,再啰嗦一下,這個配置的意思就是所有的類路徑。我們這樣配置了以后,JVM會去把D盤根路徑,還有你執(zhí)行程序的當前目錄當做根路徑,這個待會還會細說。
步驟 6 package
D盤的根目錄是我們的類路徑,已經(jīng)配好了??墒荢tringUtil不在D盤的根目錄啊,而在D盤里面一個叫做tool的文件夾。為了讓JVM能夠知道,我們還得修改StringUtil,加上package。
package tool;
class StringUtil
{
public static void newLine(String msg){
System.out.println(msg);
}
}
步驟 7 驗證
tool文件夾也叫做包,現(xiàn)在我們來做驗證,給StringUtil加一個main方法。
package tool;
class StringUtil
{
public static void newLine(String msg){
System.out.println(msg);
}
public static void main(String[] args){
newLine("StringUtil");
}
}
用EditPlus的Ctrl+1編譯,然后在外面打開CMD黑窗口,不需要進入D盤,直接輸入命令。

tool.StringUtil,這個“.”很有靈性,JVM會把“.”翻譯成\。
因為CLASSPATH里面有D:\,所以最終找到的位置是:D:\tool\StringUtil
這下,就很清楚了吧。
步驟 8 親自做一遍
強烈建議把上面的實驗自己做一遍,我相信很多人都不注重這個原理,因為IDEA真香。但是吧,身為程序員,還是要知道一點的,以后出去吹牛逼也有東西不是?
步驟 9 為什么現(xiàn)在用Editplus運行報錯了?
你可以試一下,在Editplus里面運行StringUtil,會報錯的。

原因很簡單,因為你加了package
package tool;
你不加的話,就是一個默認的包(default package),也就是CLASSPATH里面所有的路徑。你一旦加上這句話,那么運行的時候,JVM就得上綱上線,先去CLASSPATH里面找,然后對應著,看看里面是不是有個tool文件夾。你直接運行是啥意思啊,意思就是你打算直接在CLASSPATH里面找一個StringUtil.class去運行??墒荄盤沒有這個StringUtil.class,當前目錄到是有,可人家開頭有一句package tool啊,它認為自己是在D:\tool下面的,也不肯給你運行,所以就找不到了。
除非,你把package tool;去掉。
步驟 10 說白了
說白了,剛才的語句就是
java StringUtil
不加任何包,全裸的,這就叫做默認包(default package),默認包就是你CLASSPATH配置的那些地方。
步驟 11 包的作用
最后了,點題哈,包的作用有兩個,1是防止類重名,方法重名。比如,我們寫了StringUtil,但是據(jù)我所知,很多第三方jar包都有StringUtil,如果不用package來區(qū)分,那豈不是亂套了?
2是為了更好的管理class文件,畢竟,你一個項目有很多個class,成百上千個都有可能,不用package來分類,那這個項目還怎么維護???
以上就是java編程小白進階包的作用詳解的詳細內(nèi)容,更多關(guān)于java包的作用的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java的Hibernate框架中復合主鍵映射的創(chuàng)建和使用教程
復合主鍵映射用起來比普通的增加主鍵字段要復雜,這里我們就來共同學習Java的Hibernate框架中復合主鍵映射的創(chuàng)建和使用教程,需要的朋友可以參考下2016-07-07
Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法【測試可用】
這篇文章主要介紹了Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法,涉及java文件讀寫及圖形創(chuàng)建等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
struts2+jsp+jquery+Jcrop實現(xiàn)圖片裁剪并上傳實例
本篇文章主要介紹了struts2+jsp+jquery+Jcrop實現(xiàn)圖片裁剪并上傳實例,具有一定的參考價值,有興趣的可以了解一下。2017-01-01
Java高性能本地緩存框架Caffeine的實現(xiàn)
本文主要介紹了Java高性能本地緩存框架Caffeine的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
使用IDEA和Gradle構(gòu)建Vertx項目(圖文步驟)
這篇文章主要介紹了使用IDEA和Gradle構(gòu)建Vertx項目(圖文步驟),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
mybatis利用association或collection傳遞多參數(shù)子查詢
今天小編就為大家分享一篇關(guān)于mybatis利用association或collection傳遞多參數(shù)子查詢,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
SpringBoot+Mybatis plus實現(xiàn)多數(shù)據(jù)源整合的實踐
本文主要介紹了SpringBoot+Mybatis plus實現(xiàn)多數(shù)據(jù)源整合的實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Spring?boot2.0?實現(xiàn)日志集成的方法(2)
這篇文章主要介紹了Spring?boot2.0?實現(xiàn)日志集成的方法,上一章講解了spring?boot日志簡單集成,這篇我們將日志進行分類,常規(guī)日志、異常日志、監(jiān)控日志等,需要將日志輸出到不同的文件,具體內(nèi)容需要的小伙伴可以參考一下2022-04-04

