以前有零散地閱讀過TIJ,可是都是針對本身的問題去有針對性的閱讀,沒有從頭梳理過Java的一些基礎知識。從前段時間開始本身也開始了總體性地學習TIJ的過程,也從這篇博客開始把本身的一些感悟和理解總結起來,也但願能對你們和我本身都有些幫助。html
第一章大體都是一些面嚮對象語言或針對JAVA的特性的一些介紹,在後面的每一章中都有詳細的介紹,因此從讀書總結從第二張開始。java
對於這一塊,JVM的內存模型是必需要清楚的內容,這個博客對於JVM內存模型的介紹很是全面,能夠參考學習。 簡略的說,內存能夠分爲虛擬機棧,本地方法棧,程序計數器,堆,方法區(包含運行時常量池)等部分。學習
Java在任何平臺上每種基本類型所佔空間的大小都一致,這也是Java跨平臺特性的緣由之一。 編碼
參考2.2.1中可知,java基本類型不存儲在堆中,而基本類型對飲的包裝類的實例對象存儲在堆中,java提供了自動包裝機制來處理基本類型和實例對象的轉換問題。spa
特別的是:基本類型的包裝類和String類都是final的,不可變,因此每次操做都會生成一個新的對象,看起來和基本類型的傳值操做很類似。 且String類在初始化時JVM針對其初始化的方式的不一樣會有不一樣的處理,後面專門講解String的章節會詳細介紹。code
java中主要是用花括號來控制做用範圍。 基本類型的做用域:htm
{ int x = 12; /* only x available */ { int q = 96; /* both x & q available */ } /* only x available */ /* q 「out of scope」 */ }
而下面的方式是不容許的,在C++中是能夠的,但在Java中是不被容許的。對象
{ int x = 12; { int x = 96; /* illegal */ } }
對象的做用域: new的對象能夠存活在做用域以外,只要有引用一直指向它,那麼對象就不會消失,但在範圍外引用會失效。blog
類的成員變量在實例化時會自動初始化,在沒有指定的狀況下,基本類型會初始化成爲默認值,類對象會設置成爲null。繼承
<table> <tr> <td>類型 </td> <td>值</td> </tr> <tr> <td>Boolean </td> <td>false</td> </tr> <tr> <td>Boolean </td> <td>false</td> </tr> <tr> <td>char </td> <td>false</td> </tr> <tr> <td>Boolean </td> <td>'\u0000'(null)</td> </tr> <tr> <td>byte </td> <td>(byte)0</td> </tr>
<tr> <td>short </td> <td>(short)0</td> </tr> <tr> <td>int</td> <td>0</td> </tr> <tr> <td>long</td> <td>0L</td> </tr> <tr> <td>float</td> <td>0F</td> </tr> <tr> <td>double</td> <td>0D</td> </tr> </table> 可是局部變量不會設置默認初始值!須要本身初始化,若是忘記了,那麼在編譯時會範圍錯誤。
p.s. 這裏初始化的問題在後面類的初始化和加載的時候會詳細討論,涉及繼承,多態等狀況時,初始化會變得較爲複雜。
在註釋內按照標準的格式輸入,能夠利用JavaDoc提取文檔。 獨立文檔標籤是一些@開頭的命令。
靜態導入:其實很好理解,和普通import的區別就在於靜態導入後使用對應類的靜態方法時不須要使用類名.靜態方法的方式,能夠直接使用方法名。但其實我我的認爲通常用import就能夠了,由於靜態方法多的時候,使用靜態import一旦出現重名的狀況很容易發生衝突。
這是java裏使人很迷惑的部分,能夠參考17章的筆記~
對char, byte, short類型的數值進行移位處理,在移位進行以前,會被轉換成int類型,而且最終也會獲得int。
基本類型的類型轉換中,窄化轉換必需要強制類型轉換,可是擴輾轉換不須要顯示的類型轉換。
布爾類型不支持類型轉換!
截尾與舍入
goto在C,C++中是不推薦使用的,在java中沒有goto關鍵字,java經過另外一種加了限定的方式實現了受控的goto。
label1: //外部循環 { //內部循環 { //... break; //1 //... continue; //2 //... continue label1; //3 //... break label1; //4 } }
上面僞代碼中若是執行到3處,那麼會跳轉到循環外label1處繼續進行迭代;
若是進行到4出那麼會跳轉到label1處,而且不會從新進入迭代。
前三章相對來講都是很是基礎的內容,在以前的工做中基本都已經熟悉了。可是有幾點須要注意: