學習內容
1.物件導向與面向過程
面向過程:
根據需求,分析解決該需求所需要的步驟,利用函式(方法)將這些步驟一一實現,使用時在進行依次呼叫。
物件導向:
把需求分解成乙個個的功能,利用函式(方法)將這些功能一一實現,使用時呼叫功能。
在物件導向的思維中,不考慮每個功能具體需要哪些步驟、是怎麼實現的,簡單來說就是你辦事我放心。
例:如何把大象裝入冰箱?
物件導向:1.開啟冰箱門(方法)2.把大象裝進冰箱(功能)3.關閉冰箱門(功能)
整個過程需要三個方法:開啟,裝載,關閉,乙個物件:大象。
2.物件記憶體**
3.類與物件
類指的是對某一類物件的抽象解釋,例如動物、人類,而物件則是類具體化的體現,例如貓、中國人,創造物件的過程就是例項化類。
class4.基本型別與引用型別傳參human
}
基本型別:
a的值被複製乙份傳入方法change,方法內改變a的值,只在方法內生效,方法執行完畢,彈棧,主方法內的a不改變。
引用型別:
引用型別傳參是把其實體地址傳入方法,此時會有兩個引用指向該實體地址,即主方法裡的引數a,change方法內的形參a,此時方法內改變a[0],
則直接會對堆內的資料進行改變,所以主方法內的a[0]也隨之改變。
5.成員變數與區域性變數
區別一:定義的位置不同
定義在類體中、方法外的變數是成員變數
定義在方法中或者{}語句(**塊)裡面的變數是區域性變數
區別二:在記憶體中的位置不同
成員變數儲存在對記憶體的物件中
區域性變數儲存在棧記憶體的方法中
區別三:生命週期不同
成員變數隨著物件的出現而出現在堆中,隨著物件的消失而從堆中消失
物件被例項化,成員變數(除靜態變數外,靜態變數不論有沒有例項化物件都會被初始化)就會被初始化!
區域性變數隨著方法的執行而出現在棧中,隨著方法的彈棧而消失
區別四:初始化不同
成員變數因為在堆記憶體中,有預設的初始化值,可直接使用其預設值。
區域性變數在棧記憶體中,沒有預設的初始化值,必須手動的給其賦值才可以使用。
棧:存放基本型別的變數資料和物件的引用,但物件本身不存放在棧中,而是存放在堆(new 出來的物件)或者常量池中(物件可能在常量池裡)(字串常量物件存放在常量池中。)
堆:存放所有new出來的物件。
靜態域:存放靜態成員(static定義的)
常量池:存放字串常量和基本型別常量(public static final)。
變數的傳值與傳引用
傳值 b a 將a變數的值傳值給b變數。調式傳值 a 100 b 200 b a echo b 100 a 300 echo b 100 b 300 echo a 300 unset a echo a echo b 傳引用 b a 將a變數的位址傳遞給b變數。調式傳引用 a 100 b 200 b ...
變數的傳值與引用
傳值 b a 將a變數的值傳值給b變數。調式傳值 a 100 b 200 b a echo b 100 a 300 echo b 100 b 300 echo a 300 unset a echo a echo b 傳引用 katex parse error expected eof got at ...
類物件的「傳值」與「傳引用」
傳值 就是通過值來傳遞乙個物件,這個過程需要拷貝建構函式來進行。而 傳引用 實質上就是一種指標傳遞。兩種傳遞方式在使用上存在效率問題和 切割 問題。1 效率 而前所述,傳值 需要呼叫拷貝建構函式。例如 class ctest ctest const ctest ref ctest ctest fun...