1. 程式人生 > >java知識點查漏補缺

java知識點查漏補缺

寫此篇文章的緣由

學習java已經一年有餘了,所謂溫故而知新,所以最近又在複習以前學過的java知識,同時更加深入了對java的學習,這期間的疑難問題和不熟悉沒接觸過的知識點,特開此貼紀錄。

順便插一句,這是我以前的java課堂上學習的程式碼庫,配套清華大學出版社陳國君主編的《java程式設計基礎》,程式碼庫包括一些書上給出的示例源程式(部分)、課後習題(部分)和實驗室上機程式碼。傳送門

宣告

到目前為止,本篇文章的內容大部分來自於ycblogs

正文部分

instanceof關鍵字

說明

instanceof是Java的一個二元操作符,和==,>,<是同一類東西。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的物件是否是它右邊的類的例項,返回boolean型別的資料。

示例

String a = "123";
boolean b = a instanceof String;

java是如何實現跨平臺的

跨平臺是怎樣實現的呢?這就要談及Java虛擬機器(Java Virtual Machine,簡稱 JVM)。

JVM也是一個軟體,不同的平臺有不同的版本。我們編寫的Java原始碼,編譯後會生成一種 .class 檔案,稱為位元組碼檔案。Java虛擬機器就是負責將位元組碼檔案翻譯成特定平臺下的機器碼然後執行。也就是說,只要在不同平臺上安裝對應的JVM,就可以執行位元組碼檔案,執行我們編寫的Java程式。

而這個過程中,我們編寫的Java程式沒有做任何改變,僅僅是通過JVM這一”中間層“,就能在不同平臺上執行,真正實現了”一次編譯,到處執行“的目的。

JVM是一個”橋樑“,是一個”中介軟體“,是實現跨平臺的關鍵,Java程式碼首先被編譯成位元組碼檔案,再由JVM將位元組碼檔案翻譯成機器語言,從而達到執行Java程式的目的。

注意:編譯的結果不是生成機器碼,而是生成位元組碼,位元組碼不能直接執行,必須通過JVM翻譯成機器碼才能執行。不同平臺下編譯生成的位元組碼是一樣的,但是由JVM翻譯成的機器碼卻不一樣。

所以,執行Java程式必須有JVM的支援,因為編譯的結果不是機器碼,必須要經過JVM的再次翻譯才能執行。即使你將Java程式打包成可執行檔案(例如 .exe),仍然需要JVM的支援。

注意:跨平臺的是Java程式,不是JVM。JVM是用C/C++開發的,是編譯後的機器碼,不能跨平臺,不同平臺下需要安裝不同版本的JVM。

命名規範【必須見名知意】

* 下劃線式命名:my_name
* 駝峰式命名:myName
* 類,介面命名:必須是大寫字母開頭,比如PersonActivity
* 方法,變數【字串】命名:getData(),otherName
* 常量命名:一般全是大寫,比如MAX_VALUE

有關堆和棧

棧: 存放的是區域性變數

區域性變數:在方法定義或者方法宣告上的變數都是區域性變數。

堆: 存放的是所有new出來的東西

深入瞭解泛型

點選檢視

有關String

String一旦被建立就不能改變

下面這條語句一共建立了多少個物件:String s = “a”+“b”+”c”; 分別都是什麼?
答案:5個物件
分別是 "a" , "b" , "c" , "ab" , "abc"。

有關基礎型別快取池

以Integer為例
new Integer(123) 與 Integer.valueOf(123) 的區別在於:
new Integer(123) 每次都會新建一個物件;
Integer.valueOf(123) 會使用快取池中的物件,多次呼叫會取得同一個物件的引用。

Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(x == y);    // false
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(z == k);   // true