成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java中的面向?qū)ο?

shusen / 1788人閱讀

摘要:在棧中運(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)存圖


對象調(diào)用方法時,根據(jù)對象中方法標(biāo)記(地址值),去類中尋找方法信息。這樣哪怕是多個對象,方法信息只保存一份,節(jié)約內(nèi)存空間。

一個引用,作為參數(shù)傳遞到方法中內(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)文章

  • Java學(xué)習(xí)筆記——面向對象

    摘要:對象既是該類事物實實在在存在的個體。類與對象的關(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,我們都聽過這句話:萬物皆對象。那么什...

    DoINsiSt 評論0 收藏0
  • 談?wù)勎宜斫獾?em>面向對象

    摘要:眾多面向?qū)ο蟮木幊趟枷腚m不盡一致,但是無論哪種面向?qū)ο缶幊陶Z言都具有以下的共通功能。原型編程以類為中心的傳統(tǒng)面向?qū)ο缶幊?,是以類為基礎(chǔ)生成新對象。而原型模式的面向?qū)ο缶幊陶Z言沒有類這樣一個概念。 什么是面向?qū)ο??這個問題往往會問到剛畢業(yè)的新手or實習(xí)生上,也是往往作為一個技術(shù)面試的開頭題。在這里我們不去談如何答(fu)好(yan)問(guo)題(qu),僅談?wù)勎宜斫獾拿嫦驅(qū)ο蟆?從歷...

    avwu 評論0 收藏0
  • Java知識點總結(jié)(面向對象

    摘要:知識點總結(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)行了封...

    itvincent 評論0 收藏0
  • 7. 初步理解面向對象 【連載 7】

    摘要:是一種典型的面向?qū)ο缶幊陶Z言。這篇文章主要是來初步理解一下面向?qū)ο蟮乃季S為下面的內(nèi)容先給一個基礎(chǔ)。針對面向?qū)ο缶幊痰母鄡?nèi)容,會在后面的文章里面詳細(xì)解釋。他們都稱之為對象。之后,我們再用編程語言,把這種映射編寫出來,就是的面向?qū)ο缶幊汤病? showImg(https://segmentfault.com/img/remote/1460000012983458?w=900&h=500);...

    keelii 評論0 收藏0
  • Java小白進(jìn)階筆記(3)-初級面向對象

    摘要:面向?qū)ο缶幊虖牟煌慕嵌葋砜创嬎銠C(jī)程序,它注重的是計算機(jī)所完成的任務(wù),而非處理方式。傳統(tǒng)的語言屬于面向過程編程,語言屬于面向?qū)ο缶幊獭C嫦驅(qū)ο缶幊谈鶕?jù)要解決的問題,可以抽象出如下對象客戶銀行卡現(xiàn)金票據(jù)等。 面向過程編程&面向?qū)ο缶幊?從面向過程到面向?qū)ο螅粌H僅是編程方式的改變,更重要的是思維方式的改變。 面向過程編程按照順序執(zhí)行的一系列指令,通常是分析出解決問題所需要的步驟,然后用...

    AnthonyHan 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<