接下來一段時間姜钳,會持續(xù)發(fā)布一個JavaSE學(xué)習(xí)筆記系列文章袒啼!
1.面向?qū)ο蟮乃枷?/h1>
- 要考慮問題有哪些類和哪些對象吞琐。
- 要考慮這些類和這些對象有哪些行為和屬性邻梆。
- 考慮類和類之間具備了哪些關(guān)系拱礁。(繼承琢锋、多態(tài)、實(shí)現(xiàn)觅彰、關(guān)聯(lián))
2.對象的定義
可以看成靜態(tài)屬性(成員變量)和動態(tài)屬性(方法)的封裝體吩蔑。(必須首先定義類才能有對象)
3.類的定義
類是用來創(chuàng)建同一類型的對象的“模板”,在一個類中定義了該類的對象所應(yīng)具有的成員變量與方法填抬。(最合適的方法應(yīng)該定義在最合適的類中)
4.局部變量
Java中的任何局部變量應(yīng)該先聲明烛芬,然后賦值,最后再使用飒责。定義成員變量時可以對其初始化赘娄,也可以不初始化(這時Java中給出默認(rèn)初始化)。成員變量的作用范圍是整個類體宏蛉。
5.變量類型
Java中除基本類型之外的變量類型都是引用類型遣臼。Java中的對象是通過引用對其操作的。引用相當(dāng)于C/C++的指針拾并。在Java中揍堰,傳參時鹏浅,都是以傳值的方式進(jìn)行的。對于基本數(shù)據(jù)類型屏歹,傳遞的是數(shù)據(jù)的拷貝隐砸。對于引用類型,傳遞的是引用的拷貝蝙眶〖鞠#基本數(shù)據(jù)類型是內(nèi)存中的一小塊區(qū)域。引用類型是內(nèi)存中的兩小塊區(qū)域幽纷。(堆和棧)
6.類式塌、變量、方法的區(qū)別
類是靜態(tài)的概念友浸,在代碼區(qū)中峰尝。對象是new出來的,位于堆內(nèi)存(用來動態(tài)分配內(nèi)存的)中尾菇。類的每個成員變量在每一個對象中都有不同的值(除了靜態(tài)變量)境析,而方法只有一份,執(zhí)行的時候才占用內(nèi)存派诬。對象只能在運(yùn)行時分配內(nèi)存劳淆。(局部變量是分配在棧內(nèi)存中的)
7.變量類型的內(nèi)存分配
基礎(chǔ)類型的變量只有一塊內(nèi)存(棧內(nèi)存),而引用類型的變量有兩塊內(nèi)存(堆內(nèi)存與棧內(nèi)存)默赂。(方法的返回值也存在于一個臨時的變量里沛鸵,在棧內(nèi)存中)
8.方法調(diào)用
方法調(diào)用完畢之后,在椑掳耍空間中為對內(nèi)存分配的局部變量自動消失曲掰。方法的參數(shù)可以看作是局部變量。
9.編程語言的一般內(nèi)存分布
- 靜態(tài)數(shù)據(jù)存在于data segment中.
- 用new, malloc等動態(tài)生成的對象和數(shù)據(jù)存放在heap堆中.
- 局部變量存在于stack堆棧中.
10.使用new關(guān)鍵字創(chuàng)建對象
- 使用對象(引用).成員變量來引用對象的成員變量
- 使用對象(引用).方法(參數(shù)列表)來調(diào)用對象的方法
- 同一類的每個對象有不同的成員變量存儲空間
- 同一類的每個對象共享該類的方法(靜態(tài)的代碼奈辰,只有在運(yùn)行時才被分配到內(nèi)存) 非靜態(tài)方法是針對每個對象進(jìn)行調(diào)用的栏妖。