Java編程思想之一切都是對象

來源:互聯網
上載者:User

    2.2.3 Java中的數組

    當建立一個數組對象時,實際上就是建立了一個引用數組,並且每個引用都會自動被初始化為一個特定值,該值擁有自己的關鍵字null。一旦java看到null,就知道這個引用還沒有指向某個對象。在使用任何引用之前,必須為其制定一個對象;

 

    2.3 永遠不需要銷毀對象

        2.3.1 範圍(scope):範圍決定了在其內定義的變數名的可見度和生命週期,在範圍裡定義的變數只可用於範圍結束之前。

        2.3.2 對象的範圍:Java對象不具有和基本類型一樣的生命週期。當用new建立一個Java對象時,它可以存活於範圍之外。所以假定你採用如下代碼:{ String s = new String("a string"); } //End of scope

        引用s在範圍終點就消失了,然而,s指向的String對象仍繼續佔據記憶體空間。

        Java有一個“記憶體回收行程”,用來監視用new建立的所有對象,並辨別那些不會再被引用的對象。隨後,釋放這些對象的記憶體空間,以便供其他新的對象使用。這樣做就消除了"記憶體泄露"問題,這是由於程式員忘記釋放記憶體而產生的問題。

 

    2.4 建立新的資料類型:類

    2.5 方法、參數和傳回值

    許多程式設計語言(像C和C++)用“函數”這個術語來描述命名子程式;而在Java裡卻常用“方法”這個術語來表示“做某些事情的方式”。

    Java的方法決定了一個對象能夠接收什麼樣的訊息。

    方法的基本組成部分包括:名稱、參數、傳回值和方法體。傳回型別是指調用方法後返回的資料的類型。參數列表給出了要傳給方法的資訊的類型和名稱。方法名和參數列表共同唯一地標識出某個方法。

    例如:假設有一個方法f(),不帶任何參數,傳回型別是int.如果有個名為a的對象,可以通過它調用f(),那麼就可以寫為:int x = a.f();

傳回值的類型必須要與x的類型相容。這種調用方法的行為通常被稱為“發送訊息給對象”。在上面的例子中,訊息是f(),對象是a。物件導向的程式設計通常簡單地歸納為“向對象發送訊息”。

 

    若傳回型別是void,return關鍵字的作用只是用來退出方法。

 

    2.6 構建一個java程式

        2.6.3 static關鍵字

        通常來說,當建立類時,就是在描述那個類的對象的外觀和行為。除非用new建立那個類的對象,否則,實際上並未獲得任何東西。執 行new來建立對象時,資料存放區空間才被分配,其方法才供外界調用。

        但是有兩種情形用上述方法是無法解決的。一種情形是:只想為某特定資料分配一份儲存空間,而不去考慮究竟要建立多少對象,甚至 根本就不建立任何對象。另一種情形是,希望某個方法不與包含它的類的任何對象關聯在一起。也就是說,即使沒有建立對象,也能夠調用者個方法。通過static關鍵字可以滿足上述這兩方面的需要。

        當聲明一個事物是static時,就意味著這個資料或方法不會與包含它的那個類的任何對象執行個體關聯在一起。

 

        引用static變數有兩種方法。可以通過一個對象去定位它,也可以通過其類名直接引用(最好用這種方法),而這對於非靜態成員則不行。

        static方法的一個重要用法就是在不建立任何對象的前提下就可以調用它。正如我們將會看到的那樣,這一點對定義main()方法很重   要,這個方法是運行一個應用時的進入點。

        和其他任何方法一樣,static方法可以建立或使用與其類型相同的被命名物件,因此,static方法常常拿來做“牧羊人”的角色,負責看護與其隸屬同一類型的執行個體群。

 

    2.7 你的第一個java程式

    在每個程式檔案的開頭,必須聲明import語句,以便引入在檔案代碼中需要用到的所有額外類。注意,在這裡說它們“額外”,是因為有一個特定類會自動被匯入到每一個Java檔案中:java.lang。

    若不知某個特定類在哪個類庫裡,可以在Java文檔中選擇“Tree”,便可以看到Java配套提供的每一個類。

    main()方法的參數是一個String對象的數組。有的程式並未用到args,但是Java編譯器要求必須這樣做,因為args要用來儲存命令列參數。

 

    2.8 注釋和嵌入式文檔

        2.8.1 注釋文檔

        Java語言一項更好的設計就是:程式碼的編寫並不是唯一重要的事情——文檔編寫的重要性並不亞於程式碼本身。代碼文檔撰寫的最大問題,大概就是對文檔的維護了。

        如果文檔與代碼是分離的,那麼在每次修改代碼時,都需要修改相應的文檔,這會成為一件相當麻煩的事情。解決的方法似乎很簡單: 將代碼同文檔“連結”起來。

        為了達到這個目的,最簡單的方法是將所有東西都放在同一個檔案內、使用一種特殊的注釋文法來標記文檔,此外還需要一個工具,用 於提取那些注釋,並將其轉換成有用的形式。這正是java所做的。

        javadoc便是用於提取注釋的工具,它是JDK安裝的一部分。它採用了Java編譯器的某些技術,尋找程式內的特殊標籤注釋。它不僅解 析由這些標籤標記的資訊,也將毗鄰注釋的類名或方法名抽取出來。如此,我們就可以用最少的工作量,產生相當好的程式文檔。

        javadoc輸出的是一個HTML檔案,可以用Web瀏覽器查看,這樣,該工具就使得我們只需要建立和維護單一的源檔案,並能自動產生 有用的文檔。有了javadoc,就有了建立文檔的標準;我們可以期望,甚至要求所有的Java類庫都提供相關的文檔。

        此外,如果想對javadoc處理過的資訊執行特殊的操作(例如,以不同格式輸出),那麼可以通過編寫你自己的被稱為“doclets”的   javadoc處理器來實現。關於doclets將在第15章介紹。

        下面,僅對基本的javadoc進行簡單介紹和概述。全面詳實的描述可以從java.sun.com提供的、可下載的JDK文檔中找到。(注       意此文檔並沒有與JDK一塊打包,需單獨下載。)解壓縮該文檔之後,查閱"tooldocs"子目錄(或點擊"tooldocs"連結)。

    此處有一個疑問:這裡提到的“可下載的JDK文檔”是指JDK API文檔嗎?應該不是,因為我找不到所說的那個“解壓縮該文檔之後,查閱"tooldocs"子目錄”。那麼,在哪裡能下載到?

 

        2.8.2 文法

        所有javadoc命令都只能在"/**"注釋中出現,和通常一樣,注釋結束於“*/”。使用javadoc的方式主要有兩種:嵌入HTML,或使         用“文檔標籤”。“獨立文檔標籤”是一些以“@”字元開頭的命令,且要置於注釋行的最前面(但是不算前置“*”之後的最前面)。而“行內文       檔標籤”則可以出現在javadoc注釋中的任何地方,他們也是以“@”字元開頭,但要包括在花括弧內。

        共有三種類型的注釋文檔,分別對應於注釋位置後面的三種元素:類、變數和方法。也就是說,類注釋正好位於類定義之前;變數注釋 正好位於變數定義之前;而方法注釋也正好位於方法定義的前面。如下面這個簡單的例子所示:

    /** A class comment */

    public class DocTest {

        /** A variable comment */

        public int i;

        /** A method comment */

        public void f() {}

    }

    注意,javadoc只能為“public”和“protected”成員進行文檔注釋。“private”和包內可訪問的注釋會被忽略掉,所以輸出結果中看不到它們(不過可以用-private進行標記,以便把private成員的注釋也包括在內)。這樣做是有道理的,因為只有public和protected成員才能在檔案之外被使用,這是用戶端程式員所期望的。至於所有對類的注釋,則都會包含在輸出結果中。

 

        2.8.3 嵌入式HTML

        2.8.4 一些標籤樣本

 

    2.9 編碼風格

    2.10 總結

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.