淺析Java中的 new 關(guān)鍵字
java的new關(guān)鍵字想必大家都知道這是實(shí)例化一個(gè)對(duì)象。沒(méi)錯(cuò),也是為新對(duì)象分配內(nèi)存空間。
比如new MyDate(22,7,1964)這樣一個(gè)案例,他的完成需要四部:
一。為新對(duì)象分配內(nèi)存空間,將MyDate存儲(chǔ)到堆。
二。執(zhí)行顯示的初始化
三。執(zhí)行構(gòu)造器。new方法中括號(hào)參數(shù)傳遞給構(gòu)造器,出書話該對(duì)象數(shù)值
四。該變量被賦值為堆內(nèi)存中新對(duì)象的引用
通俗的說(shuō),你new的操作,實(shí)際上是在內(nèi)存的堆中新添加一個(gè)new的對(duì)象并且通過(guò)構(gòu)造方法初始化這個(gè)新對(duì)象并且在棧中存放該對(duì)象的引用
下面我有一個(gè)案例,通俗易懂那種:
public class Pet {
protected bean be = this.b();
public bean b(){
return new bean();
}
}
public void test(){
be.setName("張三");
}
public void test2(){
System.out.println(be.getName());
}
public static void main(String[] args) {
People pe = new People();
pe.test();
pe.test2();
}
一個(gè)父類,一個(gè)子類,通過(guò)test給name賦值,test2輸出值你會(huì)發(fā)現(xiàn)輸出的正事test給name的賦值,因?yàn)樵谶\(yùn)行main方法時(shí),程序會(huì)先編譯父類并且實(shí)例化be對(duì)象,所以子類中的引用都是同一個(gè)對(duì)象,但是如果修改為下面代碼這種:
public void test(){
bean be = new bean();
be.setName("張三");
}
public void test2(){
System.out.println(be.getName());
}
public static void main(String[] args) {
People pe = new People();
pe.test();
pe.test2();
}
在test中我新new了一個(gè)be對(duì)象,這樣的輸出是null,因?yàn)樗麄冊(cè)趦?nèi)存棧中存放的引用是不一樣,在實(shí)際編碼的過(guò)程中,引用比較多的對(duì)象最好在父類中寫好,子類繼承,或者寫成java的單利懶漢模式:
public class DanLi1class {
//1.要想實(shí)現(xiàn)單利模式,必須修改其構(gòu)造方法()
private DanLi1class(){
}
//2.首先自己先實(shí)例化該實(shí)例
private static DanLi1class dan1 = new DanLi1class();
//3.為保證別的程序訪問(wèn)到該實(shí)例的實(shí)例華對(duì)象,需要定義一個(gè)靜態(tài)方法
public static DanLi1class danli1(){
return dan1;
}
}
這樣會(huì)節(jié)省內(nèi)存占用,使得對(duì)象能夠重復(fù)使用,何樂(lè)而不為呢。
相關(guān)文章
SpringBoot整合Dubbo+Zookeeper實(shí)現(xiàn)RPC調(diào)用
這篇文章主要給大家介紹了Spring Boot整合Dubbo+Zookeeper實(shí)現(xiàn)RPC調(diào)用的步驟詳解,文中有詳細(xì)的代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-07-07
SpringBoot封裝響應(yīng)數(shù)據(jù)實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了SpringBoot封裝響應(yīng)數(shù)據(jù)實(shí)現(xiàn)過(guò)程,SpringBoot響應(yīng)數(shù)據(jù)封裝是指在SpringBoot應(yīng)用程序中,將返回的數(shù)據(jù)進(jìn)行封裝,以便于前端頁(yè)面或其他客戶端使用,感興趣想要詳細(xì)了解可以參考下文2023-05-05
springboot druid mybatis多數(shù)據(jù)源配置方式
這篇文章主要介紹了springboot druid mybatis多數(shù)據(jù)源配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Java調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口
這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-06-06
InputStreamReader和BufferedReader用法及實(shí)例講解
這篇文章主要介紹了InputStreamReader和BufferedReader用法及實(shí)例講解的相關(guān)資料,需要的朋友可以參考下2015-12-12
Java實(shí)現(xiàn)數(shù)字轉(zhuǎn)成英文的方法
這篇文章主要介紹了Java實(shí)現(xiàn)數(shù)字轉(zhuǎn)成英文的方法,涉及java數(shù)組與字符串的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05
使用Java實(shí)現(xiàn)MySQL數(shù)據(jù)鎖定的策略
在并發(fā)環(huán)境下,多個(gè)線程同時(shí)對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行讀寫操作可能會(huì)導(dǎo)致數(shù)據(jù)沖突和不一致的問(wèn)題,為了解決這些并發(fā)沖突,我們可以采用數(shù)據(jù)鎖定策略來(lái)保證數(shù)據(jù)的一致性和完整性,下面將介紹如何使用Java實(shí)現(xiàn)MySQL數(shù)據(jù)鎖定策略,,需要的朋友可以參考下2023-08-08
Java中四種9*9乘法表的實(shí)現(xiàn)方式(附代碼)
這篇文章主要介紹了Java中四種9*9乘法表的實(shí)現(xiàn)方式(附代碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

