一、內(nèi)存分區(qū)
棧區(qū):方法的工作空間,數(shù)據(jù)結(jié)構(gòu)是后進(jìn)先出
堆區(qū):二叉樹(穩(wěn)定),存放對(duì)象,分為屬性空間和方法空間
方法區(qū):
- 代碼區(qū)
- 類代碼區(qū)
- 共享代碼區(qū):靜態(tài)代碼區(qū),實(shí)例代碼區(qū) - 數(shù)據(jù)區(qū)
- 靜態(tài)數(shù)據(jù)區(qū)
- 常數(shù)據(jù)區(qū)
二、結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)
結(jié)構(gòu)化程序設(shè)計(jì)是以功能為核心,面向?qū)ο蟪绦蛟O(shè)計(jì)是以對(duì)象為核心
結(jié)構(gòu)化程序設(shè)計(jì)存在的問題:
1.數(shù)據(jù)和方法是分離的
2.維護(hù)性能差
對(duì)象:事物在問題領(lǐng)域的抽象
領(lǐng)域模型:對(duì)象之間的關(guān)系抽象成類和類之間的關(guān)系
三、構(gòu)造方法語法:
1.方法名和文件名相同
2.方法沒有返回值
注意:
1.一個(gè)類中可以有多個(gè)構(gòu)造方法,只要保證參數(shù)不同就行,也就是方法的重載
2.構(gòu)造方法里的參數(shù)可以是0個(gè),1個(gè)或者多個(gè)
3.構(gòu)造方法必須通過new或者是系統(tǒng)調(diào)用
4.不要在構(gòu)造方法中定義與實(shí)例屬性同名的局部變量。因?yàn)榫植孔兞恐荒茉诜椒ǖ膬?nèi)部訪問,這些局部變量會(huì)屏蔽同名的實(shí)例屬性。
使用構(gòu)造方法的目的:給對(duì)象的屬性做初始化
tips:構(gòu)造方法在方法區(qū)中,通過new將對(duì)象的地址給構(gòu)造方法,構(gòu)造方法再將對(duì)象的屬性初始化。如果在類里不寫構(gòu)造方法,默認(rèn)存在一個(gè)無參的構(gòu)造方法
四、面試題:
1、創(chuàng)建對(duì)象有幾種方式?構(gòu)造方法是否都被調(diào)用?為什么調(diào)用?
有四種方法可以創(chuàng)建對(duì)象
1.new 創(chuàng)建對(duì)象。這是最常用的方式,需要明確的知道某個(gè)類名,并且要提供構(gòu)造方法才能new對(duì)象
2.通過反射創(chuàng)建對(duì)象。不知道要?jiǎng)?chuàng)建什么類的對(duì)象
3.clone。不會(huì)調(diào)用構(gòu)造方法,與原來的對(duì)象不是同一個(gè)對(duì)象,在不同的內(nèi)存空間
4.序列化。沒有調(diào)用構(gòu)造方法,把一個(gè)對(duì)象通過一個(gè)流輸入到網(wǎng)絡(luò)中,再通過流重建一個(gè)對(duì)象
2、深拷貝和淺拷貝的區(qū)別?