1、2章讀書筆記

Java平臺與Java語言的關係:Java平臺包括:核心Java API(包、框架、類庫),Java字節碼(編譯且可執行的形式),Java虛擬機(JVM,執行字節碼的運行機制)。

Groovy、JRuby、JPython也可以編寫出運行在JVM上執行的字節碼。Android使用的是Dalvik虛擬機,執行Dalvik字節碼

 

Java的運行機制:先編譯成系統無關的字節碼,再在JVM中解釋執行。

 

JVM工作步驟:創建JVM裝載環境與配置,裝載jvm.dll,初始化jvm.dll,調用JNIEnv實例裝載並處理Class類,運行Java程序。

 

JRE:Java Runtime Environment。JRE自帶的基礎類庫在JRE/lib/rt.jar中。包括SE版所有類庫

 

JDK:Java Development Kit。其中的常用工具包括:javac.exe,jar.exe,javadoc.exe,jdb.exe,java.exe,appletviewer.exe,javah.exe,javap.exe,jconsole.exe

 

JDK>JRE>JVM

 

 

GC Garbage Collection。 GC實現無嚴格規定,通常採用有向圖方式記錄、管理堆中所有對象,當對象不可達時,GC有責任回收這些內存空間。爲了GC更高效,注意儘早將不引用的對象賦爲null。finalize會加大GC的工作量,儘量少用,System.gc()用於通知GC運行,但並不保證一定會運行。

 

JAVA安裝後有jdk與jre(jre1)兩個文件夾,其中jdk下又有一個jre(jre2)文件夾。其中jre2是用來爲JDK中Java編寫的開發工具提供運行環境的。

 

final關鍵字:不可繼承、不可覆蓋、不可修改(簡單類型不可修改值,引用類型不可修改引用)

 

instanceof關鍵字:a instanceof someClass在a爲someClass類的對象或其子類對象時返回true,否則返回false

 

float f = 3.4是不正確的,因爲小數默認爲double類型。必須float f = 3.4f或float f = (float)3.4

 

成員變量與局部變量:

1.       局部變量必須顯式初始化,而成員變量可默認初始化(除僅被final而不被static修飾時)

2.       成員變量存儲在堆中,局部變量存儲在棧中。

 

簡單變量與引用變量:

1.  簡單變量存在本中,引用變量分爲引用空間和存儲空間兩部分,引用空間在棧中,存放存儲空間的首地址,存儲空間在堆中。

2.  引用變量相互賦值時傳遞的是地址。

 

x+=y與x=x+y的區別:+=包含了自動的強制類型轉換。

 

x?y:z表達式中,y和z應當是相同的數據類型。(如果採用類似someMethod(x?y:z)判斷執行某方法的參數而y與z類型不同,即使someMethod擁有對兩種類型不同的重載,該代碼也無法執行的。必須someMethod存在對y與z共同超類的重載纔可以)。

 

String的+運算符是如何實現重載的?(使用的是StringBuilder的append()方法)

 

String s = new String(“abc”)和String s = “abc”的區別

如果String s1 = new String(“abc”); String s2 = new String(“abc”);String s3 = “abc”; String s4 = “abc”;

s1==s2爲false,s3==s4爲true。

s3、s4的賦值,採用的是Java爲字符串提供緩衝池機制,去緩衝池查找相應字符串,否則創建一個新的字符串放在緩衝池中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章