Tag: JAVA

  • JAVA學習資料

    要想深入理解“容器”的概念需要我們首先理解“容器”的宏觀框架——容器框架。容器框架從宏觀角度為我們描述了壹個“容器”的世界,告訴我們在Java的容器世界中有哪些 “容器”、它們之間的關系如何、它們是什麽樣子、它們如何使用。總之,容器框架就是壹個用於表示操作集合的統壹的體系結構,容器框架包含以下元素: q 接口——它們代表容器類型的抽象數據類型。SCJP 整個Java容器類的基礎後來是容器接口(例如Collection,Map等接口),而不是類。使用接口的最大好處在於將容器的實現與容器的接口分開,這就意味著妳可以使用相同的方法訪問容器而不用關心容器是由什麽樣的數據結構實現的,即接口允許操作容器和不涉及容器所代表的細節。在面向對象的語言中,這些接口壹般組成壹個層次結構。 q 實現—— 它們是容器接口的具體實現。 q 算法—— 它們是在實現集合接口對象上執行運算的方法,如搜索和排序。這些算法被稱為多態的,也就是說,相同的方法可以用於處理某種接口的許多種不同的實現,算法就是可重用的功能。 相比較傳統的容器框架——例如C++的標準模板庫(Standard Template Library)和Smalltalk 的層次結構,Java的容器框架結構清晰,容易掌握。 圖6.1是容器框架中接口以及實現的之間的集成關系圖,它對我們學習Java中大量容器類型是很有幫助的。點線箭頭代表特定的類實現(Implements)壹個接口(若是抽象類,則表示部分實現了接口)。虛線線箭頭表示壹個類可以生成(Produce)箭頭所指向類的對象,例如,任意的Collection可以生成Iterator,而List可以生成ListIterator(當然,也能生成普通的Iterator)。實線箭頭表示類間的繼承(Inheritate)關系。 要想深入理解“容器”的概念需要我們首先理解“容器”的宏觀框架——容器框架。容器框架從宏觀角度為我們描述了壹個“容器”的世界,告訴我們在Java的容器世界中有哪些 “容器”、它們之間的關系如何、它們是什麽樣子、它們如何使用。總之,容器框架就是壹個用於表示操作集合的統壹的體系結構,容器框架包含以下元素: q 接口——它們代表容器類型的抽象數據類型。整個Java容器類的基礎後來是容器接口(例如Collection,Map等接口),而不是類。使用接口的最大好處在於將容器的實現與容器的接口分開,這就意味著妳可以使用相同的方法訪問容器而不用關心容器是由什麽樣的數據結構實現的,即接口允許操作容器和不涉及容器所代表的細節。在面向對象的語言中,這些接口壹般組成壹個層次結構。 q 實現—— 它們是容器接口的具體實現。 q 算法—— 它們是在實現集合接口對象上執行運算的方法,如搜索和排序。這些算法被稱為多態的,也就是說,相同的方法可以用於處理某種接口的許多種不同的實現,算法就是可重用的功能。 相比較傳統的容器框架——例如C++的標準模板庫(Standard Template Library)和Smalltalk 的層次結構,Java的容器框架結構清晰,容易掌握。 圖6.1是容器框架中接口以及實現的之間的集成關系圖,它對我們學習Java中大量容器類型是很有幫助的。點線箭頭代表特定的類實現(Implements)壹個接口(若是抽象類,則表示部分實現了接口)。虛線線箭頭表示壹個類可以生成(Produce)箭頭所指向類的對象,例如,任意的Collection可以生成Iterator,而List可以生成ListIterator(當然,也能生成普通的Iterator)。實線箭頭表示類間的繼承(Inheritate)關系。

  • JAVA認證基礎:隨機整數的生成過程

    使用Java 2 SDK基礎類庫產生隨機數的方法很多。但是如果你跟不上這些類庫的更新腳步,你有可能正在使用的是一種低效的隨機數生成機制,更糟糕的是:你有可能得到的不是均勻分布的隨機數。本文將向你展示一種較為可靠的隨機數生成方法,同時與其他方法進行比較。 自從JDK最初版本發布起,我們就可以使用java.util.Random類產生隨機數了。在JDK1.2中,Random類有了一個名為nextInt()的方法:public int nextInt(int n)給定一個參數n,nextInt(n)將返回一個大於等於0小於n的隨機數,即:0 <= nextInt(n) < n。你所要做的就是先聲明一個Random的對象,在調用其nextInt(n)函數以返回隨機值。這裏有個示例,下面的代碼段將生成很多隨機數並輸出它們的平均值: 以下是引用片段:   int count = 1000000;   int range = Integer.MAX_VALUE / 3 * 2;   double sum = 0;   Random rand = new Random();   for (int i=0; i<count; i++) {   sum += rand.nextInt(range);   }   System.out.println(sum/count); 執行了1000000次循環之後,得到的平均值基本上就處於隨機數範圍的中點(midpoint)。   到目前為止,事情還並不復雜,但是我們會問為什麽要使用nextInt(n)?考慮一下的隨機數生成方法:   (1)使用老的方法nextInt(),沒有制定數值範圍   (2)用Math.abs()靜態函數得到(1)中產生值的絕對值   (3)對(2)的結果進行取模運算(%),得到期望範圍類的值   我們說nextInt(n)要比上述方法更好,為什麽呢?參考以下的代碼段: 以下是引用片段:   sum = 0;   for…