淺析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)文章
java 中InputStream,String,File之間的相互轉(zhuǎn)化對(duì)比
這篇文章主要介紹了java 中InputStream,String,File之間的相互轉(zhuǎn)化對(duì)比的相關(guān)資料,需要的朋友可以參考下2017-04-04
SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI
這篇文章主要介紹了SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
IDEA感覺(jué)不香了AI智能編程工具Cursor使用圖文教程
這篇文章主要介紹了IDEA感覺(jué)不香了AI智能編程工具Cursor使用,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Spring FactoriesLoader機(jī)制實(shí)例詳解
這篇文章主要介紹了Spring FactoriesLoader機(jī)制實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Spring Cloud Ribbon實(shí)現(xiàn)客戶端負(fù)載均衡的示例
本篇文章主要介紹了Spring Cloud Ribbon實(shí)現(xiàn)客戶端負(fù)載均衡的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02

