摘要:在棧中運(yùn)行方法,當(dāng)看到時,會自動把類加載到方法區(qū)當(dāng)看到局部變量時,會在棧中開辟一塊空間當(dāng)看到時,會在堆內(nèi)存中開辟空間,并將堆內(nèi)存中的對應(yīng)地址賦值給還會拿到方法區(qū)的地址值指向方法區(qū)。變量指向堆內(nèi)存中的空間,尋找方法信息,去執(zhí)行該方法。
類對象的格式
類名 標(biāo)識符(變量名/對象的引用)= new 類名();
public class Tool { public static double Sum(double [] scores){ double sum=0.0; for( int i = 0; i面向過程和面向?qū)ο蟮膮^(qū)別 1.關(guān)注點不同:
面向過程:關(guān)心的是事件中的每一步功能怎么做;
面向?qū)ο螅宏P(guān)心的是事件中的每一步功能有沒有什么對象已經(jīng)實現(xiàn)好了,然后直接拿來使用
2.效率不同:
面向過程:因為自己要參與每一步的實現(xiàn),所以效率比較慢;
面向?qū)ο螅阂驗榇蠖鄶?shù)都是調(diào)用別人已經(jīng)實現(xiàn)好的功能,所以效率比較高;
3.開發(fā)質(zhì)量:
面向過程:因為是自己一步步實現(xiàn)的,大多數(shù)情況會有地方出現(xiàn)問題;
面向?qū)ο螅阂驗榇蠖鄶?shù)都是調(diào)用別人寫好的功能,而這些功能一般都進(jìn)過大量的驗證,質(zhì)量有保證;
4.使用范圍不同:
面向過程:適合解決需求簡單的問題;
面向?qū)ο螅焊m合解決復(fù)雜的需求;
面向?qū)ο笫腔诿嫦蜻^程的;
面向?qū)ο蟠a例子:
public class Car { String color; void run(){ System.out.println(color+"顏色的車在行駛"); } } class Test{ public static void main(String[] args){ Car car = new Car(); car.color="紅"; car.run(); } }一個對象調(diào)用一個方法內(nèi)存圖
首先JVM運(yùn)行一個class文件時,使用類加載器先將Demo類加載到方法區(qū),然后main方法壓棧(入棧)。·在棧中運(yùn)行main方法,當(dāng)jvm看到Phone時,會自動把Phone類加載到方法區(qū);當(dāng)看到局部變量p時,會在棧中開辟一塊空間;當(dāng)看到new Phone()時,會在堆內(nèi)存中開辟空間,并將堆內(nèi)存中的對應(yīng)地址0x123賦值給p;還會拿到方法區(qū)的地址值指向方法區(qū)。
·在main方法中運(yùn)行到給對象p的屬性賦值時,通過地址去堆內(nèi)存中找到相應(yīng)屬性并賦值,運(yùn)行p.sendMessage()這一步時,也是根據(jù)地址值去堆內(nèi)存中找到相應(yīng)的對象,再用對象去方法區(qū)中找到sendMessage()方法,然后將sendMessage()方法壓到棧中(入棧),調(diào)用完畢sendMessage()方法會出棧。
·main方法運(yùn)行結(jié)束后會出棧。
通過以上步驟描述,我們可以理解,在棧內(nèi)存中運(yùn)行的方法,遵循"先進(jìn)后出,后進(jìn)先出"的原則。變量p指向堆內(nèi)存中的空間,尋找方法信息,去執(zhí)行該方法。
兩個對象調(diào)用同一個方法內(nèi)存圖一個引用,作為參數(shù)傳遞到方法中內(nèi)存圖
對象調(diào)用方法時,根據(jù)對象中方法標(biāo)記(地址值),去類中尋找方法信息。這樣哪怕是多個對象,方法信息只保存一份,節(jié)約內(nèi)存空間。局部變量和成員變量
引用類型作為參數(shù),傳遞的是地址值。成員變量:直接定義在類中的變量--直接定義在類的變量。
局部變量:定義在類中局部位置(函數(shù)中)的變量--直接定義在函數(shù)的變量。
public class test { int a = 10;//成員變量 public static void main(String[] args ){ int a =100;//局部變量 System.out.println("a:"+a);//100 } }區(qū)別
1.從定義的位置上:
局部變量:函數(shù)里面
成員變量:直接定義在類中
2.從內(nèi)存上看:
局部變量:棧內(nèi)存中
成員變量:堆內(nèi)存中
3.從生命周期(指的是從分配空間到回收空間)上看:
局部變量:隨著函數(shù)進(jìn)棧執(zhí)行,開始分配空間;函數(shù)之行結(jié)束出棧,空間被回收
成員變量:隨著創(chuàng)建對象開始分配空間;隨著對象的空間變成垃圾空間被回收而被回收;
4.從使用范圍上:
局部變量:僅限于定義它的局部范圍里面(比如函數(shù)中)
成員變量:整個類中
5.從初始值上看:
局部變量:沒有默認(rèn)值,使用前必須先要初始化
匿名對象匿名對象:沒有名字的對象;
匿名對象,就是創(chuàng)建對象后,不將引用賦值給任何變量;
匿名對象雖然沒有那個變量持有它的引用,但是對象創(chuàng)建出來的時候,自己是知道自己的引用,這個時候可以使用它;
匿名對象的應(yīng)用如果一個對象只需要作為參數(shù)被使用一次,就可以定義為匿名對象,好處是在那行代碼執(zhí)行結(jié)束后,不會繼續(xù)占有內(nèi)存空間;
開源地址開源項目地址:https://github.com/371854496/...
java學(xué)習(xí)資料:https://github.com/371854496/...
各位覺得還闊以的話,點下Star,分享不易,thank you!
公眾號 全戰(zhàn)開花獲取更多技術(shù)干貨
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75982.html
摘要:對象既是該類事物實實在在存在的個體。類與對象的關(guān)系圖類就是汽車汽車就是堆內(nèi)存中的對象。成員變量成員變量成員函數(shù)的車,輪胎數(shù)個,跑起來了對象的創(chuàng)建創(chuàng)建對象中創(chuàng)建對象,使用關(guān)鍵字在堆內(nèi)存中開辟了空間,產(chǎn)生了一個實體。 聲明:本文首發(fā)于我的個人微信公眾號【Java編程社區(qū)】,查看更多文章與學(xué)習(xí)資源請移步我的公眾號Java編程社區(qū) 萬物皆對象 學(xué)習(xí)Java,我們都聽過這句話:萬物皆對象。那么什...
摘要:眾多面向?qū)ο蟮木幊趟枷腚m不盡一致,但是無論哪種面向?qū)ο缶幊陶Z言都具有以下的共通功能。原型編程以類為中心的傳統(tǒng)面向?qū)ο缶幊?,是以類為基礎(chǔ)生成新對象。而原型模式的面向?qū)ο缶幊陶Z言沒有類這樣一個概念。 什么是面向?qū)ο??這個問題往往會問到剛畢業(yè)的新手or實習(xí)生上,也是往往作為一個技術(shù)面試的開頭題。在這里我們不去談如何答(fu)好(yan)問(guo)題(qu),僅談?wù)勎宜斫獾拿嫦驅(qū)ο蟆?從歷...
摘要:知識點總結(jié)面向?qū)ο笾R點總結(jié)面向?qū)ο竺嫦驅(qū)ο蟾拍钍窍鄬τ诿嫦蜻^程而言,過程其實就是函數(shù),對象是將函數(shù)和屬性進(jìn)行了封裝。指向了該對象關(guān)鍵字代表對象。靜態(tài)變量所屬于類,所以也稱為類變量成員變量存在于堆內(nèi)存中。 Java知識點總結(jié)(面向?qū)ο螅?@(Java知識點總結(jié))[Java, Java面向?qū)ο骫 [toc] 面向?qū)ο蟾拍?是相對于面向過程而言,過程其實就是函數(shù),對象是將函數(shù)和屬性進(jìn)行了封...
摘要:是一種典型的面向?qū)ο缶幊陶Z言。這篇文章主要是來初步理解一下面向?qū)ο蟮乃季S為下面的內(nèi)容先給一個基礎(chǔ)。針對面向?qū)ο缶幊痰母鄡?nèi)容,會在后面的文章里面詳細(xì)解釋。他們都稱之為對象。之后,我們再用編程語言,把這種映射編寫出來,就是的面向?qū)ο缶幊汤病? showImg(https://segmentfault.com/img/remote/1460000012983458?w=900&h=500);...
摘要:面向?qū)ο缶幊虖牟煌慕嵌葋砜创嬎銠C(jī)程序,它注重的是計算機(jī)所完成的任務(wù),而非處理方式。傳統(tǒng)的語言屬于面向過程編程,語言屬于面向?qū)ο缶幊獭C嫦驅(qū)ο缶幊谈鶕?jù)要解決的問題,可以抽象出如下對象客戶銀行卡現(xiàn)金票據(jù)等。 面向過程編程&面向?qū)ο缶幊?從面向過程到面向?qū)ο螅粌H僅是編程方式的改變,更重要的是思維方式的改變。 面向過程編程按照順序執(zhí)行的一系列指令,通常是分析出解決問題所需要的步驟,然后用...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 2596·2021-11-22 12:01
閱讀 1121·2021-11-15 11:37
閱讀 3709·2021-09-22 14:59
閱讀 1769·2021-09-04 16:45
閱讀 1400·2021-09-03 10:30
閱讀 1035·2021-08-11 11:18
閱讀 2476·2019-08-30 10:53
閱讀 2028·2019-08-29 15:13