2004-09-27
學習java虛擬機規范之前,已經有了心理的準備,像我這種從應用中開始真正了解計算機的人,可能會遇到許許多多的問題,很多關于底層的,硬件級別的概念可能會無法理解,但是只要能開始,就是進步,不是嗎。
第一章:前言
************************************************************************************************
java虛擬機假定任何實現技術或主機平臺,它并不非得是解釋型的,它也可以像傳統的程序設計語言一樣,通過把它的指令集編譯成一個實際的CPU指令集來實現。它也可以直接用微代碼或者直接用芯片來實現。
?
第二章:Java概念
(這個部分是對Java語言的介紹,這里羅列出一些比較細節的概念)
1、Java語言使用Unicode1.1.5版編寫。
2、除了注釋、字符、字符串、標識符之外,Java程序的所有輸入元素都是ascii碼形式。
?? 測試證明變量定義可以使用中文。
3、字符串文字以及更一般的常數表達式的值的字符串,被用方法String.inter內部化以共享惟一的實例。
4、整型和引用類型可以轉化為boolean型,非零和非null都為true。(以標準C++的方式x!=0和obj!=null)
5、三種引用類型:類引用,接口引用,數組引用,所有對象包括數組都支持Object類的方法。
6、執行順序:裝載類---鏈接一個類型或者類(檢驗,準備和可選的解析)---初始化(這個初始化可能引起相關父類的初始化動作)
7、類實例退出的時候自動的調用finalize()方法
8、類卸載的時候自動調用classFinalize()方法。
9、虛擬機退出的條件:1、所有非守護線程中止。2、顯式調用了Runtime或者System的exit方法
************************************************************************************************
6、變量是一種存儲位置,有相應的類型,稱為編譯期類型,可以是引用類型,也可以是基本類型。
?? 問題:變量本身是怎樣的一個存在,它的結構如何。
7、java語言中多次提到基本數值類型的特殊值NaN,但是不知道其表現和使用。
2004-6-3凌晨1點,讀至2、16 執行,31頁。
2004-6-3下午五點:讀至34頁
2004-6-6晚上8:30-10:30,讀至第三章:java虛擬機結構:41頁
為了了解i=i++的奧秘,我提前閱讀了第八章:線程和鎖,好像能夠理解,結果又被全盤推翻了。(通查網上的說法:i=i++的特殊之處在于i++,或者說是++操作符的實現,i++操作的方式是1:將i值拷貝一份到另一內存區域,2、對原i值執行++操作,3、將i++的結果放入新分配的區域內,而對于i=i++,就多了第四步:4、將i++值回寫到i的存儲區域中),但java為什么這么實現不是很清楚