成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

直接明了的告訴你——對象與內(nèi)存控制

canger / 2045人閱讀

摘要:的垃圾回收機制是由一條后臺線程執(zhí)行的,其本身也是非常消耗內(nèi)存的,因此,濫用創(chuàng)建對象,會導(dǎo)致性能大大下降,對內(nèi)存的分配的了解就顯得尤為重要變量分類局部變量形參存在于方法簽名中定義的局部變量,有方法調(diào)用者為其賦值,隨著方法的結(jié)束而消亡方法內(nèi)部變

JVM的垃圾回收機制是由一條后臺線程執(zhí)行的,其本身也是非常消耗內(nèi)存的,因此,濫用創(chuàng)建對象,會導(dǎo)致性能大大下降,對內(nèi)存的分配的了解就顯得尤為重要

變量分類 局部變量

形參:存在于方法簽名中定義的局部變量,有方法調(diào)用者為其賦值,隨著方法的結(jié)束而消亡

方法內(nèi)部變量:在方法內(nèi)部定義的局部變量,必須在方法內(nèi)對其進行顯示初始化,隨著方法的結(jié)束而消亡

代碼塊內(nèi)部的局部變量:在代碼塊內(nèi)定義的局部變量,必須在代碼塊內(nèi)對其顯式初始化,隨著代碼塊結(jié)束而消亡

成員變量

實例變量:非靜態(tài)的成員變量,隨著對象的產(chǎn)生,進行初始化等操作,對象結(jié)束變量也就消亡

類變量:靜態(tài)的成員變量,帶有static修飾符,隨著類初始化產(chǎn)生,隨著類消失而消失

在創(chuàng)建變量的時候,一定要合法的前向引用。其含義就是先定義的變量不能引用后定義的變量,反之則可以

變量的內(nèi)存分配

在同一個JVM中每一個類只會存在一個Class對象,因此JVM只要分配一塊內(nèi)存空間給類變量就可以了,而實例變量則每次創(chuàng)建對象都要為其分配一塊內(nèi)存,幾個實例就要創(chuàng)建幾塊內(nèi)存空間

實例變量的初始化時機

定義變量的時候

代碼塊中

構(gòu)造器中

定義實例變量時指定的初始值、初始化塊中為實例變量指定初始值的語句的地位是平等的,當(dāng)經(jīng)過編譯器處理后,他們都將被提取到構(gòu)造器中,也就是說在編譯后,初始化都會被放在構(gòu)造器中按先后順序進行初始化賦值

類變量初始化時機

同一個JVM中,類變量只能初始化一次

定義變量的時候

靜態(tài)代碼塊

父類構(gòu)造器

在創(chuàng)建Java對象的時候,都會先去執(zhí)行該類的父類對象的非靜態(tài)代碼塊和構(gòu)造器,最后才是該類的非靜態(tài)代碼塊和構(gòu)造器

所謂的隱式調(diào)用和顯式調(diào)用,其實就是有沒有用super去調(diào)用父類的構(gòu)造器的區(qū)別。

如果父類還沒被初始化過,則會最先對類變量進行初始化

訪問子類對象的實例變量

子類的方法可以訪問父類的實例變量,這是因為子類繼承父類就會獲得父類的成員變量和方法,但父類的方法不能訪問子類的實例變量,因為父類無法知道哪個子類繼承他

而且子父類中的成員變量(類變量和實例變量)是相互獨立的,父類中的成員變量不會被子類中同名的變量覆蓋

class Base {
    static int count = 2;
}

class Mid extends Base {
    static int count = 20;
    
}

public class Sub extends Mid {
    static int count = 200;

    public static void main(String[] args) {
        // 創(chuàng)建一個Sub對象
        Sub s = new Sub();
        // 將Sub對象向上轉(zhuǎn)型后賦為Mid、Base類型的變量
        Mid s2m = s;
        Base s2b = s;
        // 分別通過3個變量來訪問count實例變量
        System.out.println(s.count);
        System.out.println(s2m.count);
        System.out.println(s2b.count);
    }
}

結(jié)果

200
20
2

當(dāng)創(chuàng)建Sub的時候,會初始化Base、Mid和Sub三個對象,同時也就存在三個count變量了,也就是說有三塊內(nèi)存保存著這三個對象和count變量,以s2m變量為例,s2m擁有的地址是Sub對象的堆地址,但s2m變量類是是Mid,則會去尋找Mid下的變量值

也就說成員變量的值取決于聲明該變量聲明時是所用的類型

訪問子類對象的方法

子類可以重寫父類的方法,子類也可以通過super的方式調(diào)用父類的方法,在多態(tài)的情況下,子類重寫的方法會覆蓋掉父類的方法

class Base{
    int count =2;
    public void display(){
        System.out.println(this.count);
    }
}
class Derived extends Base{
    int count =20;
    @Override
    public void display() {
        System.out.println(this.count);
    }
}
public class FieldAndMethod {
    public static void main(String[] args) {
        Base b=new Base();
        System.out.println(b.count);
        b.display();
        Derived d=new Derived();
        System.out.println(d.count);
        d.display();
        Base db=new Derived();
        System.out.println(db.count);
        db.display();
        Base b2d=d;
        System.out.println(b2d.count);
    }
}

結(jié)果

2
2
20
20
2
20
2

一切在你執(zhí)行這段代碼之后,你就會明白一切了。

更多內(nèi)容可以關(guān)注微信公眾號,或者訪問AppZone網(wǎng)站

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/65983.html

相關(guān)文章

  • 前端基礎(chǔ)進階(四):詳細圖解作用域鏈閉包

    摘要:之前一篇文章我們詳細說明了變量對象,而這里,我們將詳細說明作用域鏈。而的作用域鏈,則同時包含了這三個變量對象,所以的執(zhí)行上下文可如下表示。下圖展示了閉包的作用域鏈。其中為當(dāng)前的函數(shù)調(diào)用棧,為當(dāng)前正在被執(zhí)行的函數(shù)的作用域鏈,為當(dāng)前的局部變量。 showImg(https://segmentfault.com/img/remote/1460000008329355);初學(xué)JavaScrip...

    aikin 評論0 收藏0
  • 前端內(nèi)存泄漏分析案例

    摘要:查找原因因為更新了的版本才出現(xiàn)內(nèi)存泄漏的問題,所以有理由懷疑,就是新增加的功能導(dǎo)致的內(nèi)存泄漏。同時還發(fā)現(xiàn)了也有內(nèi)存泄漏的情況,通過同樣的方式定位到了這個問題并最終解決。 在最近給客戶交付的一個項目中,客戶反映系統(tǒng)跑一段時間就會奔潰掉。我的第一直覺就是可能發(fā)生了內(nèi)存泄漏。 復(fù)現(xiàn)bug 為了能夠讓bug復(fù)現(xiàn),我讓開發(fā)的小伙,先把模擬系統(tǒng)在本地跑起來。要知道,bug復(fù)現(xiàn)是很重要的。bug復(fù)現(xiàn)...

    CatalpaFlat 評論0 收藏0
  • 13 萬字 C 語言從入門到精通保姆級教程2021 年版 (建議收藏)

    摘要:友情提示先關(guān)注收藏,再查看,萬字保姆級語言從入門到精通教程。及大牛出天地開始有隨之乃有萬種語年英國劍橋大學(xué)推出了語言。 友情提示:先關(guān)注收藏,再查看,13 萬字保...

    zombieda 評論0 收藏0
  • 記一次 JAVA 內(nèi)存泄露分析

    摘要:展示如下場景再現(xiàn)經(jīng)過分析,最后我們定位到是使用產(chǎn)生的內(nèi)存泄露問題。下面通過一個,來簡單講下具體內(nèi)存泄露的原因。這一次的內(nèi)存泄露問題算是解決了??偨Y(jié)關(guān)于內(nèi)存泄露問題在第一次排查時,往往是有點不知所措的。 記一次 JAVA 的內(nèi)存泄露分析 摘要:本文屬于原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請保留出處:https://github.com/jasonGeng88/blog 當(dāng)前環(huán)境 jdk == 1.8 ...

    Tecode 評論0 收藏0
  • 【譯】JavaScript面試問題:事件委托和this

    摘要:主題來自于的典型面試問題列表。有多種方法來處理事件委托。這種方法的缺點是父容器的偵聽器可能需要檢查事件來選擇正確的操作,而元素本身不會是一個監(jiān)聽器。 showImg(http://fw008950-flywheel.netdna-ssl.com/wp-content/uploads/2014/11/Get-Hired-Fast-How-to-Job-Search-Classifieds...

    浠ラ箍 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<