Time of Update: 2018-12-04
Java作為業界應用最為廣泛的語言之一,深得眾多軟體廠商和開發人員的推崇,更是被包括Oracle在內的眾多JCP成員積極地推動發展。但是對於 Java語言的深度理解和運用,畢竟是很少會有人涉及的話題。InfoQ中文站特地邀請IBM進階工程師成富為大家撰寫這個《Java深度曆險》專欄,旨在就Java的一些深度和進階特性分享他的經驗。在一般的Java應用開發過程中,開發人員使用Java的方式比較簡單。開啟慣用的IDE,編寫Java原始碼,再利用IDE提供的功能直接運行 Java
Time of Update: 2018-12-04
1.八進位逸出序列:\ + 1到3位5數字;範圍'\000'~'\377' \0:Null 字元 2.Unicode逸出字元:\u + 四個十六進位數字;0~65535 \u0000:Null 字元 3.特殊字元:就3個 \":雙引號 \':單引號 \\:反斜線 4.控制字元:5個 \' 單引號字元 \\ 反斜線字元 \r 斷行符號 \n 換行 \f 走紙換頁 \t 橫向跳格 \b 退格 點的轉義:. ==> u002E
Time of Update: 2018-12-04
java中沒有指標,到處都是引用(除了基本類型)。所以,當然,你肯定知道java的引用,並用了很久,但是是不是對此瞭解地比較全面?而這些引用有什麼作用,且有什麼不同呢?Java中有個java.lang.ref包,這裡面都是描述引用對象的,包括了Reference,SoftReference,WeakReference和PhantomReference。其中,Reference是基類其他三個類的基類。下面就這幾種引用對象做個說明。強引用(Strong References)我們每天都在用強引用(
Time of Update: 2018-12-04
概述 瀏覽網頁時,當你等待載入圖片時可以閱讀和滾動網頁中的文本,這種方式不好嗎?在文書處理軟體中,當你開啟另一個需要編輯的文檔時,可以讓一個文檔在後台列印又如何呢?也許你已經享受了在回複一封email同時又能下載帶有大檔案附件的好處。通過允許一個多線程程式在同一時間做多個任務就可以使得這些方便的功能成為可能。這本書可以協助你學習這些必須的技巧並把此有用的功能與你的JAVA程式相結合。什麼是線程(What Is a Thread)
Time of Update: 2018-12-04
樣本:Map maps = new HashMap(); maps.put("1", "A"); maps.put("2", "B"); maps.put("3", "C"); maps.put("4", "D"); //1 Iterator it1 = maps.entrySet().iterator(); while(it1.hasNext()){ Entry entry = (Entry)
Time of Update: 2018-12-04
許多情況下,在一個程式中使用多線程是有益處的。下面是一些深度的觀察,為什麼是有好處的。 與使用者的更好互動(Better Interaction with the User)
Time of Update: 2018-12-04
所有的程式開發手冊都包含了各種規則。一些習慣自由程式人員可能對這些規則很不適應,但是在多個開發人員共同寫作的情況下,這些規則是必需的。這不僅僅是為了開發效率來考慮,而且也是為了後期維護考慮。一、命名規範定義這個規範的目的是讓項目中所有的文檔都看起來像一個人寫的,增加可讀性,減少項目組中因為換人而帶來的損失。(這些規範並不是一定要絕對遵守,但是一定要讓程式有良好的可讀性)> Package 的命名Package 的名字應該都是由一個小寫單片語成。> Class 的命名Class
Time of Update: 2018-12-04
什麼是多態?它的實現機制是什麼呢?重載和重寫的區別在那裡?這就是這一次我們要回顧的四個十分重要的概念:繼承、多態、重載和重寫。繼承簡單的說,繼承就是在一個現有類型的基礎上,通過增加新的方法或者重定義已有方法(下面會講到,這種方式叫重寫)的方式,產生一個新的類型。繼承是物件導向的三個基本特徵--封裝、繼承、多態的其中之一,我們在使用JAVA時編寫的每一個類都是在繼承,因為在JAVA語言中,java.lang.Object類是所有類最根本的基類(或者叫父類、超類),如果我們新定義的一個類沒有明確地指
Time of Update: 2018-12-04
每種程式設計語言都有自己的操縱記憶體中元素的方式。有時候程式員必須注意將要處理的資料是什麼類型。你是直接操縱元素,還是用某種基於特殊文法的間接表示(例如C和C++裡的指標)來操縱對象。 Java中所有這一切都得到了簡化。一切都被視為對象,因此可採用單一固定的文法。儘管一切都看作對象,但操縱的標識符實際上是對象的一個“引用”(reference)。可以將引用看作為遙控器,將對象看作為電視機,只要握住這個遙控器,就能保持與電視機的串連。當有人想改變頻道時,實際操控的是遙控器(
Time of Update: 2018-12-04
java 泛型是java SE 1.5的新特性,泛型的本質是參數化型別,也就是說所操作的資料類型被指定為一個參數。這種參數類型可以用在類、介面和方法的建立中,分別稱為泛型類、泛型介面、泛型方法。 泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴充,以支援建立可以按類型進行參數化類別。可以把型別參數看作是使用參數化型別時指定的類型的一個預留位置,就像方法的形式參數是運行時傳遞的值的預留位置一樣。
Time of Update: 2018-12-04
java中,&串連兩個數位時候,它是表示兩個位的按位與,而&&表示兩個條件的並列,除些之外,&和&&還存在一些其他的區別,請看下面一段程式的:public class Test1 { public static void main(String[] args) { int a=2; int
Time of Update: 2018-12-04
在java中,要想跳出多重迴圈,可以在外面的迴圈語句前定義一個標號,然後在裡層迴圈體的代碼中使用帶有標號的的break語句,即可跳出外層迴圈。例如:ok:for(int i=0;i<10;i++){for(int j=0;j<10;j++){system.out.println("i="+i+",j="+j);if(j==5)break
Time of Update: 2018-12-04
1. 關於Object類理解 大家都知道Object是所有Java類的基類, 意味著所有的Java類都會繼承了Object的11個方法。建議大家去看看Object的 11個成員函數的原始碼,就會知道預設的實現方式。比如equals方法,預設實現就是用”==”來比較,即直接比較記憶體位址,返回true 或者 false。而toString()方法,返回的串組成方式是?? ”getClass().getName() + ”@” +
Time of Update: 2018-12-04
s1 = s1 + 1;這句是錯誤的,s1是short類型,佔2個位元組,而s1+1自動類型轉化為int類型,佔4個位元組,然後賦給一個short類型變數s1,就要丟失2個位元組的精度,這是不允許的。如果非要這麼做,則可以寫為: s1=(short)(s1+1); short s1 = 1; s1 += 1;這是正確的,s1+=1相當於s1=(short)(s1+1)。
Time of Update: 2018-12-04
Java語言是一種特殊的進階語言,它既具有解釋型語言特徵,也具有編譯型語言的特徵,因為Java程式要經過先編譯,後解釋兩個步驟。 電腦進階語言按程式的執行方式可以分為編譯型和解釋型兩種。
Time of Update: 2018-12-04
基本類型,或者叫做內建類型,是JAVA中不同於類的特殊類型。它們是我們編程中使用最頻繁的類型,因此面試題中也總少不了它們的身影,在這篇文章中我們將從面試中常考的幾個方面來回顧一下與基本類型相關的知識。基本類型共有八種,它們分別都有相對應的封裝類。關於它們的詳細資料請看下錶:
Time of Update: 2018-12-04
又看到了請指標和引用的部分,又會有經典的swap()方法的實現。幾乎所有人都知道了,要實現一個正確的swap()方法需要以指標或引用為參數,例如:C代碼 //使用指標 void swap(int* a, int* b){ int tmp = *a; *a = *b; *b = tmp; } //使用引用 void swap(int& a,int& b){ int tmp =
Time of Update: 2018-12-04
1、java.util.Collection 是一個集合介面。它提供了對集合對象進行基本操作的通用介面方法。Collection介面在Java 類庫中有很多具體的實現。Collection介面的意義是為各種具體的集合提供了最大化的統一操作方式。 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set 2、java.util.Collections
Time of Update: 2018-12-04
Java的內建線程支援 關於Java好的方面是它有內建的寫多線程的支援。Java的設計者知道多線程編程的價值,所以聰明決定在Java的核心部分就決定直接支援線程。在第7章“並發存取對象和變數”就闡述了在Java語言中,synchronized關鍵字如何被用來鎖住對象和類來控制並發存取資料。Thread和ThreadGroup類就在java.lang包的核心API中。通過wait( ) notify( )
Time of Update: 2018-12-04
設計程式時候建立更多的線程不總是一個好主意。線程不是免費的;它們會帶來一些資源的負擔。 每個Thread 對象初始化時需要使用記憶體資源。除了對象本身使用的記憶體外,JVM還會為每個線程分配兩個執行呼叫堆疊(call stack)。一個堆棧用來跟蹤Java方法的調用和局部變數。另一個堆棧用來跟蹤本地代碼(native