1.數(shù)組存在的作用?
由于數(shù)據(jù)都是存儲(chǔ)在內(nèi)存中,而我們需要獲取到數(shù)據(jù)的值(變量的值),數(shù)組被歸納為一種數(shù)據(jù)結(jié)構(gòu),方便我們對(duì)存儲(chǔ)在內(nèi)存中的數(shù)據(jù)操縱和獲取。不然我們就只能通過(guò)地址去獲?。?/p>
int[][] arr = new int[3][3]一個(gè)二維數(shù)組,是通過(guò)一個(gè)一維數(shù)組在管理一個(gè)二維數(shù)組,嵌套管理。
arr值為[[i@343ced,一個(gè)[代表一維數(shù)組,[[代表二維數(shù)組,@343cde實(shí)體的哈希值。
arr[0]為null,如果我們不給arr[0]初始化,那么在使用的時(shí)候會(huì)有NullPinterException.
為什么要分堆內(nèi)存和棧內(nèi)存?
堆和棧其實(shí)是一種數(shù)據(jù)結(jié)構(gòu), 堆類(lèi)似樹(shù)一樣的數(shù)據(jù)結(jié)構(gòu),我的理解是分散排列的,
java通過(guò)new 對(duì)象就是分配在堆中. 棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),我們程序需要運(yùn)行,就需要讀取內(nèi)存,而我們的程序讀取的就是棧內(nèi)存當(dāng)中的數(shù)據(jù). 我們的基本數(shù)據(jù)類(lèi)型是存儲(chǔ)在棧內(nèi)存中的,當(dāng)然棧中也可以存儲(chǔ)一份我們?cè)诙阎虚_(kāi)辟內(nèi)存對(duì)象的引用.
一些混淆的關(guān)鍵字
static,靜態(tài)關(guān)鍵子,讓該代碼塊或者變量在類(lèi)加載的時(shí)候加載;
this:代表當(dāng)前類(lèi)的應(yīng)用,使用一般是在局部變量和成員變量名相同的時(shí)候.
super:在繼承中用得比較多. AextendsB 類(lèi),A中構(gòu)造函數(shù)會(huì)默認(rèn)有一行super()其實(shí)就是調(diào)用父類(lèi)的構(gòu)造函數(shù). 如果我們自己修改了構(gòu)造函數(shù)的參數(shù)如super(1)那么就會(huì)調(diào)用父類(lèi)中相應(yīng)構(gòu)造函數(shù). 我們?cè)?code>@overide復(fù)寫(xiě)父類(lèi)函數(shù)的時(shí)候.可以通過(guò)super來(lái)決定什么時(shí)候調(diào)用父類(lèi)的方法. 這個(gè)關(guān)鍵字在我理解看來(lái)解決了我們?cè)趯?duì)繼承中父類(lèi)中的方法什么時(shí)候調(diào)用或者不調(diào)用的弊端. 比如我們可以在父類(lèi)定義一些方法.來(lái)控制邏輯;
fina:被修飾了類(lèi)或者方法,變量其實(shí)就變成了一個(gè)常量,只能被初始化一次.
多態(tài)的作用?
多態(tài)對(duì)于我來(lái)說(shuō), 我的理解增加了類(lèi)的可復(fù)用性, 有時(shí)候我們需要定義一些接口,然后讓其子類(lèi)實(shí)現(xiàn), 讓后賦值給父類(lèi),那么父類(lèi)就可以調(diào)用子類(lèi)中的方法, 注意:在多態(tài)中子類(lèi)的成員變量在運(yùn)行的時(shí)候主要看
=左邊的值,也就是真正持有該對(duì)象的成員變量的值;
