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