第2章 一切都是對象

2一切都是對象html

      對象的定義(類型)、建立、存儲、操縱、銷燬、組成,引用(基本變量名)的初始化    java

 

2.1 用引用操縱對象編程

      ·編程語言操縱內存中元素的方式:數組

           ·C、C++:基於特殊語法的間接表示—指針安全

           ·Java:操縱對象引用 ->對象編程語言

                 ·建立引用工具

                 ·建立對象優化

                 ·關聯:「=」編碼

                 ·String類型:用帶引號的文本初始化指針

                       ·對引用的初始化

 

2.2 必須由你建立全部對象

      ·存儲位置

           ·寄存器:最快;CPU內;數量有限;按需分配;沒法直接控制;覺察不到存在(C、C++容許向編譯    器建議寄存器的分配方式);【誰在操控寄存器?】

           ·堆棧:速度僅次於寄存器;RAM中;堆棧指針控制;

                 ·堆棧指針:{向下移動:分配內存;向上移動:釋放內存}

                 ·靈活受限:統必須知道存儲在堆棧內全部項的確切生命週期,以便上下移動指針;

                 ·{對象引用:堆棧;new出的對象:堆}

           ·堆:比棧慢;RAM中;用於存放全部的Java對象

                 ·和堆棧相比:

                      ·好處:編譯器不須要知道存儲的數據在堆裏存活多長時間,更靈活

                      ·壞處:進行存儲分配和清理比堆棧要更多時間

           ·常量存儲:一般放在程序代碼內,安全,永不改變

                 ·嵌入式系統:同代碼分離,存放在ROM中

           ·非RAM存儲流對象 & 持久化對象——徹底存活於程序以外;不受程序的    任何控制

                 ·流對象(序列化 - 輕量級持久化):對象轉化成字節流,一般被髮送給另外一臺機器

                 ·持久化對象:存在磁盤上;須要時可恢復成基於RAM的對象

                      ·嚴格持久化:JDBC、Hibernate機制

 

      ·特例:基本類型:並不是是引用的「自動」變量,直接存「值」,堆棧中

           ·佔據存儲空間的大小不變

           ·boolean類型~存儲空間(大小):沒有明確指定,僅定義爲可以取字面量true或false

           ·void是基本類型(返回類型)但沒有值,有包裝器類型

           ·什麼是拆箱比較

           ·BigInteger & BigDecimal:大致上屬於「包裝器類」,但沒有對應的基本類型

                 ·方法調用方式 而非運算符方式

                      ·速度換取了精度

 

      ·Java中的數組

           ·C、C++中的數組 = 內存塊:

                 ·問題:

                      1.可能在初始化前被使用(內存);

                      2.訪問自身內存塊以外的數組

           ·Java:

                 ·確保數組會被初始化後才能使用——每一個數組上少許的內存開銷

                 ·不能在它的範圍以外被訪問——運行時的下標檢查

                 ·Java有時能夠優化以上操做

                 ·Java KO. C、C++:更安全,效率更高

           ·Java編譯器初始化數組:

                 ·引用數組:null

                 ·基本數據類型數組:0

 

2.3 永遠不須要銷燬對象

      ·做用域決定變量名的可見性、生命週期

      ·(做用域內的)代碼(通常)存在於堆棧中

      ·Java對象:和基本類型生命週期不一樣——new出來的對象在堆中,能夠存活於做用域以外

           ·存活於做用域以外:也就是說,做用域內的東西被清理後,垃圾回收器會在任意時間回收它

      ·Java垃圾回收器監視new建立的對象,辨別不會再被引用的對象,隨後【何時?】釋放這些對象的內存空間~消除了「內存泄漏」

           ·不用new建立對象的方式:

                 ·Class或Constructor類的newInstance()方法

                 ·clone()

                 ·反序列化

           ·那麼問題來了,這些對象怎麼清理?finalize()?

 

2.4 建立新的數據類型:類

      ·類[字段不是局部變量,方法]

      ·基本類型成員默認值

 

2.5 方法、參數和返回值

      ·方法[名稱,參數,返回值,方法體]

           ·方法簽名[方法名,參數列表]

           ·發送消息給對象 = 調用方法的行爲

      ·參數列表:傳遞對象時,傳遞的是對象引用或基本類型值

           ·字符串中每一個字符(2字節):來支持Unicode字符集

 

2.6 構建一個Java程序

      ·名字(可見性):反轉域名

      ·運用其餘構件:使用import定位文件

      ·static關鍵字:

           ·爲某特定域分配單一存儲空間

           ·建立不與對象關聯的方法

 

2.7 你的第一個Java程序

      ·編譯,運行

 

2.8 註釋和嵌入式文檔

      ·註釋文檔

           ·javadoc:提取註釋的工具

                 ·語法:

                       ·javadoc命令只能在"/**----*/"中出現

                       ·使用方式:

                            1.嵌入HTML

                            2.使用「文檔標籤」:以「@」開頭

                       ·三類註釋文檔位置:類、域、方法之

                       ·只有public、protected成員的文檔註釋才能被輸出(可用-private進行標記輸出private註釋)

                       ·不要嵌入html標題標籤:如<h1>或<hr>

           ·提取註釋:javadoc

 

2.9編碼風格

      ·駝峯風格

相關文章
相關標籤/搜索