Time of Update: 2017-02-27
Java基礎及提高教程目錄Map 介面的雜湊表和連結清單實現,具有可預知的迭代順序。此實現與 HashMap 的不同之處在於,後者維護著一個運行於所有條目的雙重連結清單。此連結清單定義了迭代順序,該迭代順序通常就是將鍵插入到映射中的順序(插入順序)。注意,如果在映射中重新插入 鍵,則插入順序不受影響。(如果在調用 m.put(k, v) 前 m.containsKey(k) 返回了 true,則調用時會將鍵 k 重新插入到映射 m 中。)此實現可以讓客戶避免未指定的、由 HashMap(及
Time of Update: 2017-02-27
類載入器是 Java 語言的一個創新,也是 Java 語言流行的重要原因之一。 它使得 Java 類可以被動態載入到 JAVA 虛擬機器中並執行。類載入器從 JDK 1.0 就出現了,最初是為了滿足 Java Applet 的需要而開發出來的。Java Applet 需要從遠程下載 Java 類檔案到瀏覽器中並執行。現在類載入器在 Web 容器和 OSGi 中得到了廣泛的使用。一般來說,Java 應用的開發人員不需要直接同類加 載器進行互動。JAVA
Time of Update: 2017-02-27
想當年學 BASIC 的時候,擷取使用者輸入多簡單,就一個 input;後來學 C, 也挺簡單,一個 scanf();後來學 c++,同樣簡單,一個 cin <<;到了 Java 這裡,麻煩來了。1、簡單的擷取使用者輸入下面是一個基本的例子,包含解釋:1.import java.io.BufferedReader;2.import java.io.InputStreamReader;3.import java.io.IOException;4.5.public class
Time of Update: 2017-02-27
commons-beanutils 類庫中有一個 BeanComparator 類,可以用來給 JavaBean 排序。但是這個類一次只能對一個屬性排序。下面是一個利用 BeanComparator 實現對 JavaBean 的多個屬性進行排序的例子,非常簡單:1.import org.apache.commons.beanutils.BeanComparator;2.import java.util.Collections;3.import
Time of Update: 2017-02-27
哈夫曼樹的內容這裡不作解釋,請自己搜尋。下面給出哈夫曼樹構造過程的 Java 實現。結點類:1./**2. * 二叉樹節點3. */4.public class Node implements Comparable {5.6. private int value;7.8. private Node leftChild;9.10. private Node rightChild;11.12. public Node(int value) {13.
Time of Update: 2017-02-27
在Java程式中可能使用多層迴圈來處理複雜的邏輯。但如果要從最內層迴圈 跳出最外層迴圈是比較麻煩。下面的代碼是一個三層迴圈的例子:String[] arr= new String[]{"a", "b", "c"};for(String s: arr){ for(String ss: arr) { for(String sss: arr) {
Time of Update: 2017-02-27
Java 在建立對象的時候會要執行它的建構函式。不僅如此,Java 還要執行父類的建構函式,往上一級一級直到沒有父類為止。對於初學者來說,有三個問題不容易搞懂:1、父類的建構函式是否一定會執行?2、是先執行子類的建構函式還是先執行父類的建構函式?3、如果父類有多個建構函式,那麼 Java 會選擇哪一個?- 父類的建構函式是否一定會執行?是的,父類的建構函式一定會執行。所以如果某個類的層次很深,那麼它建立對象時就會要執行一大堆的建構函式。-
Time of Update: 2017-02-27
線程的建立和啟動java語言已經內建了多線程支援,所有實現Runnable介面的類都可被啟動一 個新線程,新線程會執行該執行個體的run()方法,當run()方法執行完畢後,線程就 結束了。一旦一個線程執行完畢,這個執行個體就不能再重新啟動,只能重建一 個新執行個體,再啟動一個新線程。Thread類是實現了Runnable介面的一個執行個體,它代表一個線程的執行個體,並且 ,啟動線程的唯一方法就是通過Thread類的start()執行個體方法:Thread t = new Thread();t.
Time of Update: 2017-02-27
基本資料(Primitive)類型的自動裝箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0開始提供的功能。雖然為您打包基礎資料型別 (Elementary Data Type)提供了方便,但提供方便的同時表示隱藏了細節,建議在能夠區分基礎資料型別 (Elementary Data Type)與對象的差別時再使用。autoboxing和unboxing在Java中,所有要處理的東西幾乎都是對象
Time of Update: 2017-02-27
自動裝箱與拆箱的功能事實上是編譯器來幫您的忙,編譯器在編譯時間期依您所編寫的文法,決定是否進行裝箱或拆箱動作。例如:Integer i = 100;相當於編譯器自動為您作以下的文法編譯:Integer i = new Integer(100);所以自動裝箱與拆箱的功能是所謂的“編譯器蜜糖”(Compiler Sugar),雖然使用這個功能很方便,但在程式運行階段您得瞭解Java的語義。例如下面的程式是可以通過編譯的:Integer i = null;int j =
Time of Update: 2017-02-27
在Java中會經常談到類(Class)與對象(Object)這兩個名詞,要詳細談這兩個名詞的差別,就要詳細討論物件導向程式設計的內容。這裡先給出簡單的解釋:類就像是對象的設計圖,它定義了對象可操作的功能。不以Java的術語而以白話來說明的話,對象就像是一個具體的工具,而類定義了這個工具如何產生。例如您有一張剪刀的設計圖,並依這張設計圖製作了一隻剪刀,則設計圖就類似於所說的類,而製作出來的剪刀就類似於所說的工具。在正式開始學會Java物件導向程式設計之前,要先學會如何使用J2SE所提供的一系列標準
Time of Update: 2017-02-27
單例對象(Singleton)是一種常用的設計模式。在Java應用中,單例對象能保證在一個JVM中,該對象只有一個執行個體存在。正是由於這個特點,單例對象通常作為程式中的存放配置資訊的載體,因為它能保證其他對象讀到一致的資訊。例如在某個伺服器程式中,該伺服器的配置資訊可能存放在資料庫或檔案中,這些配置資料由某個單例對象統一讀取,服務進程中的其他對象如果要擷取這些配置資訊,只需訪問該單例對象即可。這種方式極大地簡化了在複雜環境下,尤其是多線程環境下的組態管理,但是隨著應用情境的不同,也可能帶來一些
Time of Update: 2017-02-27
InputStreamReader 的建構函式提供了一個參數,用於指定通過什麼編碼將 讀取到的位元組流轉換成字元。下面是一個例子:01./**02. * 讀取指定的文字檔,並返回內容03. *04. * @param path 檔案路徑05. * @param charset 檔案編碼06. *07. * @return 檔案內容08. *09. * @throws IOException 如果檔案不存在、開啟失敗或讀取失敗10. */11.private static String
Time of Update: 2017-02-27
在本文中,我們打算展示一下如何使用簡單的技術加上以以文件為主的方式 帶來有價值的商務服務,而無須使用專有的中介軟體,也不必引入Web服務棧的複 雜性。我們的靈感來自於REST的架構風格,以及把XML移到HTTP協議之上的能力 。Web服務的方式介紹我們這個方式的最好辦法就是將它和一個簡單的Web服務例子相對比。假 設有一個簡單的天氣服務,暴露出一個名為“WeatherQuery”的Web方法,這個 方法返回一個對象,包含溫度和氣壓值。在通常情況下,人們拿現成代碼,使用
Time of Update: 2017-02-27
JDBC是一種可用於執行SQL語句的JavaAPI(ApplicationProgrammingInterface應用程式設計介面)。它由一些Java語言編寫的類和介面組成。JDBC為資料庫應用開發人員、資料庫前台工具開發人員提供了一種標準的應用程式設計介面,使開發人員可以用純Java語言編寫完整的資料庫應用程式。一、ODBC到JDBC的發展曆程說到JDBC,很容易讓人聯想到另一個十分熟悉的字眼“ODBC”。它們之間有沒有聯絡呢?如果有,那麼它們之間又是怎樣的關係呢?OD
Time of Update: 2017-02-27
wait()、notify() 和 notifyAll() 方法除了使用輪詢(它可能消耗大量 CPU 資源,而且具有計時不精確的特徵),Object 類還包括一些方法,可以讓線程相互連知事件的發生。Object 類定義了 wait()、notify() 和 notifyAll() 方法。要執行這些方法,必須擁有相關對象的鎖。Wait() 會讓調用線程休眠,直到用 Thread.interrupt() 中斷它、過了指定的時間、或者另一個線程用 notify() 或 notifyAll() 喚醒它。
Time of Update: 2017-02-27
誰建立線程?即使您從未顯式地建立一個新線程,您仍可能會發現自己在使用線程。線程被從各種來源中引入到我們的程式中。有許多工具可以為您建立線程,如果要使用這些工具,應該瞭解線程如何互動,以及如何防止線程互相干擾。AWT 和 Swing任何使用 AWT 或 Swing 的程式都必須處理線程。AWT 工具箱建立單個線程,用於處理 UI 事件,任何由 AWT 事件調用的事件接聽程式都在 AWT
Time of Update: 2017-02-27
學習一種新的程式設計語言比學習新的口頭語言要容易得多。然而,在這兩種學 習過程中,都要付出額外的努力去學習不帶口音地說新語言。如果您熟悉 C 或 C++,那麼學習 Java 語言並不困難,這就像是會說瑞典語的人去學丹麥語一樣 。語言雖有不同,但又彼此互連。但若不夠謹慎,您的口音每次都會暴露出您並 非原生語言使用者這個秘密。C++ 程式員往往會對 Java 代碼做出一些變形,而這樣的舉動將他們與原生 Java 語言使用者清晰地區分開來。他們的代碼可以無錯運行,但對於原生語言用
Time of Update: 2017-02-27
Java 提供 java.beans.Introspector 類,協助我們分析 JavaBean 類當中 有哪些屬性,通過它可以方便的對 JavaBean 對象屬性進行取值和賦值操作。下 面是一個例子,根據 Map 對象中的內容建立 JavaBean 對象。01.import java.beans.BeanInfo;02.import java.beans.IntrospectionException;03.import java.beans.Introspector;04.import
Time of Update: 2017-02-27
我們經常要將數字進行格式化,比如取2位小數,這是最常見的。Java 提供 DecimalFormat 類,幫你用最快的速度將數字格式化為你需要的樣子。下面是 一個例子:import java.text.DecimalFormat; public class TestNumberFormat { public static void main(String[] args) { double pi = 3.1415927; // 圓周率 // 取一位整數