<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 2.7 我們的第一個Java程序 最后,讓我們正式編一個程序(注釋⑤)。它能打印出與當前運行的系統有關的資料,并利用了來自Java標準庫的`System`對象的多種方法。注意這里引入了一種額外的注釋樣式:`//`。它表示到本行結束前的所有內容都是注釋: ``` // Property.java import java.util.*; public class Property { public static void main(String[] args) { System.out.println(new Date()); Properties p = System.getProperties(); p.list(System.out); System.out.println("--- Memory Usage:"); Runtime rt = Runtime.getRuntime(); System.out.println("Total Memory = " + rt.totalMemory() + " Free Memory = " + rt.freeMemory()); } } ``` ⑤:在某些編程環境里,程序會在屏幕上一切而過,甚至沒機會看到結果。可將下面這段代碼置于`main()`的末尾,用它暫停輸出: ``` try { Thread.currentThread().sleep(5 * 1000); } catch(InterruptedException e) {} } ``` 它的作用是暫停輸出5秒鐘。這段代碼涉及的一些概念要到本書后面才會講到。所以目前不必深究,只知道它是讓程序暫停的一個技巧便可。 在每個程序文件的開頭,都必須放置一個`import`語句,導入那個文件的代碼里要用到的所有額外的類。注意我們說它們是“額外”的,因為一個特殊的類庫會自動導入每個Java文件:`java.lang`。啟動您的Web瀏覽器,查看由Sun提供的用戶文檔(如果尚未從 `http://www.java.sun.com` 下載,或用其他方式安裝了Java文檔,請立即下載)。在`packages.html`文件里,可找到Java配套提供的所有類庫名稱。請選擇其中的`java.lang`。在“Class Index”下面,可找到屬于那個庫的全部類的列表。由于`java.lang`默認進入每個Java代碼文件,所以這些類在任何時候都可直接使用。在這個列表里,可發現`System`和`Runtime`,我們在`Property.java`里用到了它們。`java.lang`里沒有列出`Date`類,所以必須導入另一個類庫才能使用它。如果不清楚一個特定的類在哪個類庫里,或者想檢視所有的類,可在Java用戶文檔里選擇“Class Hierarchy”(類分級結構)。在Web瀏覽器中,雖然要花不短的時間來建立這個結構,但可清楚找到與Java配套提供的每一個類。隨后,可用瀏覽器的“查找”(Find)功能搜索關鍵字`Date`。經這樣處理后,可發現我們的搜索目標以`java.util.Date`的形式列出。我們終于知道它位于`util`庫里,所以必須導入 `java.util.*`;否則便不能使用`Date`。 觀察`packages.html`文檔最開頭的部分(我已將其設為自己的默認起始頁),請選擇`java.lang`,再選`System`。這時可看到`System`類有幾個字段。若選擇`out`,就可知道它是一個`static PrintStream`對象。由于它是“靜態”的,所以不需要我們創建任何東西。`out`對象肯定是3,所以只需直接用它即可。我們能對這個`out`對象做的事情由它的類型決定:`PrintStream`。`PrintStream`在說明文字中以一個超鏈接的形式列出,這一點做得非常方便。所以假若單擊那個鏈接,就可看到能夠為`PrintStream`調用的所有方法。方法的數量不少,本書后面會詳細介紹。就目前來說,我們感興趣的只有`println()`。它的意思是“把我給你的東西打印到控制臺,并用一個新行結束”。所以在任何Java程序中,一旦要把某些內容打印到控制臺,就可條件反射地寫上`System.out.println("內容")`。 類名與文件是一樣的。若象現在這樣創建一個獨立的程序,文件中的一個類必須與文件同名(如果沒這樣做,編譯器會及時作出反應)。類里必須包含一個名為`main()`的方法,形式如下: ``` public static void main(String[] args) { ``` 其中,關鍵字`public`意味著方法可由外部世界調用(第5章會詳細解釋)。`main()`的參數是包含了`String`對象的一個數組。`args`不會在本程序中用到,但需要在這個地方列出,因為它們保存了在命令行調用的參數。 程序的第一行非常有趣: ``` System.out.println(new Date()); ``` 請觀察它的參數:創建`Date`對象唯一的目的就是將它的值發送給`println()`。一旦這個語句執行完畢,`Date`就不再需要。隨之而來的“垃圾收集器”會發現這一情況,并在任何可能的時候將其回收。事實上,我們沒太大的必要關心“清除”的細節。 第二行調用了`System.getProperties()`。若用Web瀏覽器查看聯機用戶文檔,就可知道`getProperties()`是`System`類的一個`static`方法。由于它是“靜態”的,所以不必創建任何對象便可調用該方法。無論是否存在該類的一個對象,`static`方法隨時都可使用。調用`getProperties()`時,它會將系統屬性作為`Properties`類的一個對象生成(注意`Properties`是“屬性”的意思)。隨后的的引用保存在一個名為`p`的`Properties`引用里。在第三行,大家可看到`Properties`對象有一個名為`list()`的方法,它將自己的全部內容都發給一個我們作為參數傳遞的`PrintStream`對象。 `main()` 的第四和第六行是典型的打印語句。注意為了打印多個`String`值,用加號(`+`)分隔它們即可。然而,也要在這里注意一些奇怪的事情。在`String`對象中使用時,加號并不代表真正的“相加”。處理字符串時,我們通常不必考慮`+`的任何特殊含義。但是,Java的`String`類要受一種名為“運算符重載”的機制的制約。也就是說,只有在隨同`String`對象使用時,加號才會產生與其他任何地方不同的表現。對于字符串,它的意思是“連接這兩個字符串”。 但事情到此并未結束。請觀察下述語句: ``` System.out.println("Total Memory = " + rt.totalMemory() + " Free Memory = " + rt.freeMemory()); ``` 其中,`totalMemory()`和`freeMemory()`返回的是數值,并非`String`對象。如果將一個數值“加”到一個字符串身上,會發生什么情況呢?同我們一樣,編譯器也會意識到這個問題,并魔術般地調用一個方法,將那個數值(`int`,`float`等等)轉換成字符串。經這樣處理后,它們當然能利用加號“加”到一起。這種“自動類型轉換”亦劃入“運算符重載”處理的范疇。 許多Java著作都在熱烈地辯論“運算符重載”(C++的一項特性)是否有用。目前就是反對它的一個好例子!然而,這最多只能算編譯器(程序)的問題,而且只是對`String`對象而言。對于自己編寫的任何源代碼,都不可能使運算符“重載”。 通過為`Runtime`類調用`getRuntime()`方法,`main()`的第五行創建了一個`Runtime`對象。返回的則是指向一個`Runtime`對象的引用。而且,我們不必關心它是一個靜態對象,還是由`new`命令創建的一個對象。這是由于我們不必為清除工作負責,可以大模大樣地使用對象。正如顯示的那樣,`Runtime`可告訴我們與內存使用有關的信息。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看