2016年計算機二級考試Java入門教程:Java類的基本構(gòu)成

字號:


    1:Java 類的定義形式
    一個完整的 Java 類通常由下面六個部分組成:
    包定義語句
    import 語句
    類定義{
    成員變量
    構(gòu)造方法
    成員方法
    }
    其中:只有類定義和“{}”是不可或缺的,其余部分都可以根據(jù)需要來定義。
    下面分別來學習各個部分的基本規(guī)則,看看如何寫 Java 的類。
    2: 包
    2.1:包 是什么
    在 Java 中,包是類、接口或其它包的集合,包主要用來將類組織起來成為組,從而對類進行管理。
    2.2:包 能干什么
    包對于下列工作非常有用:
    (1):包允許您將包含類代碼的文件組織起來,易于查找和使用適當?shù)念悺?BR>    (2):包不止是包含類和接口,還能夠包含其它包。形成層次的包空間。
    (3):它有助于避免命名沖突。當您使用很多類時,確保類和方法名稱的性是非常困難的。包能夠形成層次命名空間,縮小了名稱沖突的范圍,易于管理名稱。
    為便于管理數(shù)目眾多的類,Java 語言中引入了“包”的概念,可以說是對定義的 Java類進行“分組” ,將多個功能相關(guān)的類定義到一個“包”中,以解決命名沖突、引用不方便、安全性等問題。
    就好似當今的戶籍制度,每個公民除有自己的名字“張三” 、 “李四”外還被規(guī)定了他的戶籍地。假定有兩個人都叫張三,只稱呼名字就無法區(qū)分他們,但如果事先登記他們的戶籍分別在北京和上海,就可以很容易的用“北京的張三” 、 “上海的張三”將他們區(qū)分開來。如果北京市仍有多個張三,還可以細分為“北京市.海淀區(qū)的張三” 、 “北京市.西城區(qū).平安大街的張三”等等,直到能惟一標識每個“張三”為止。
    JDK 中定義的類就采用了“包”機制進行層次式管理,下圖顯示了其組織結(jié)構(gòu)的一部分:
    
    從圖中可以看出,一個名為 java 的包中又包含了兩個子包:io 包和 lang 包。lang 包中包含了 System, String, Object 三個類的定義。事實上,Java 包中既可以包含類的定義,也可以包含子包,或同時包含兩者。
    簡而言之: 從 邏輯 上 講 , 包 是一 組 相 關(guān)類 的集 合 ; 從 物 理 上 講 , 同 包即 同 目 錄。
    2.1:JDK 中常 用的 包
    java.lang----包含一些 Java 語言的核心類,包含構(gòu)成 Java 語言設(shè)計基礎(chǔ)的類。在此包中定義的最重要的一個類是“Object” ,代表類層次的根,Java 是一個單根系統(tǒng),最終的根就是“Object” ,這個類會在后面講到。
    Java 并不具有“自由”的方法,例如,不屬于任何類的方法,Java 中的所有方法必須始終屬于某個類。經(jīng)常需要使用數(shù)據(jù)類型轉(zhuǎn)換方法。Java 在 Java.lang 包中定義了“包裝對象”類,使我們能夠?qū)崿F(xiàn)數(shù)據(jù)類型轉(zhuǎn)換。如 Boolean、Character、Integer、Long、Float 和Double,這些在后面會講到。
    此包中的其它類包括:
    ? Math——封裝最常用的數(shù)學方法,如正弦、余弦和平方根。
    ? String,StringBuffer——封裝最常用的字符串操作。
    你不必顯示導入該包,該 Java 包通常已經(jīng)導入。
    java.awt----包含了構(gòu)成抽象窗口工具集(abstract window toolkits)的多個類,這些類被用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面(GUI)。
    javax.swing----完全 Java 版的圖形用戶界面(GUI)解決方案,提供了很多完備的組件,可以應(yīng)對復雜的桌面系統(tǒng)構(gòu)建。
    java.net----包含執(zhí)行與網(wǎng)絡(luò)相關(guān)的操作的類,如 URL, Socket, ServerSocket 等。
    java.io----包含能提供多種輸入/輸出功能的類。
    java.util----包含一些實用工具類,如定義系統(tǒng)特性、使用與日期日歷相關(guān)的方法。還有重要的集合框架。
    2.2:Java 中 如何 表達 包 ——package 語 句
    Java 語言使用 package 語句來實現(xiàn)包的定義。package 語句必須作為 Java 源文件的第一條語句, 指明該文件中定義的類所在的包。 若缺省該語句, 則指定為無名包, 其語法格式為:
    package pkg1[.pkg2[.pkg3…]]; //“[]”表示可選Java 編譯 器 把包對 應(yīng) 于 文 件系 統(tǒng) 的目 錄管 理,因此包也可以嵌套使用,即一個包中可以含有類的定義也可以含有子包,其嵌套層數(shù)沒有限制。package 語句中,用‘.’來指明包的層次;
    
    Java 語言要求包聲明的層次和實際保存類的字節(jié)碼文件的目錄結(jié)構(gòu)存在對應(yīng)關(guān)系, 以便將來使用該類時能通過包名(也就是目錄名)查找到所需要的類文件。簡單地說就是包的層次結(jié)構(gòu)需要和文件夾的層次對應(yīng)。
    注意:每 個源文 件 只 有一 個 包 的 聲 明, 而 且包 名 應(yīng) 該 全部 小 寫 。
    具體來說,程序員要做以下工作:
    2.3:編譯和 生 成 包
    如果在程序 Test.java 中已定義了包 p1,就必須將編譯生成的字節(jié)碼文件 Test.class 保存在與包名同名的子目錄中,可以選用下述兩種方式之一:
    采用下述命令編譯:
    javac Test.java
    則編譯器會在當前目錄下生成 Test.class 文件, 再在適合位置手動創(chuàng)建一個名為 p1 的子目錄,將 Test.class 復制到該 p1 目錄下。
    采用簡化的編譯命令,就是可以帶包編譯
    javac -d destpath Test.java
    歸入該包的類的字節(jié)代碼文件應(yīng)放在 java 的類庫所在路徑的 destpath 子目錄下。 現(xiàn)在包的相對位置已經(jīng)決定了,但 java 類庫的路徑還是不定的。事實上,java 可以有多個存放類庫的目錄,其中的缺省路徑為 java 目錄下的 lib 子目錄,你可以通過使用-classpath 選項來確定你當前想選擇的類庫路徑。 除此之外, 你還可以在 CLASSPATH 環(huán)境變量中設(shè)置類庫路徑。 destpath 為目標路徑, 可以是本地的任何絕對或相對路徑。 則編譯器會自動在 destpath目錄下建立一個子目錄 p1,并將生成的.class 文件自動保存到 destpath/p1 下。例如:
    javac -d .\ Test.java
    javac -d C:\test\ Test.java
    2.4:帶包 運行
    運行帶包的程序,需要使用類的全路徑,也就是帶包的路徑,比如上面的那個程序,就使用如下的代碼進行運行:
    java p1.Test