為變量或字符串對象賦空值null、長度為0的字符串、不賦值 占不占內存


代碼:

public class TestNullAndNothing {
    int a;//自動賦值為0;如果是對象,自動賦值為null
    public static void main(String[] args) {
        String s="";
        System.out.println("長度為0的字符串:"+RamUsageEstimator.sizeOf(s));//打印所占內存大小
        String ss=null;
        System.out.println("字符串賦空值:"+RamUsageEstimator.sizeOf(ss));

        int b=11;//變量不初始化編譯不能通過
        System.out.println("全局變量不賦值:"+RamUsageEstimator.sizeOf(new TestNullAndNothing().a));
        System.out.println("變量賦初值:"+RamUsageEstimator.sizeOf(b));
    }
}

結果:

長度為0的字符串:40
字符串賦空值null:0
全局變量不賦值:16
變量賦初值:16

總結:

1.長度為0的字符串占內存

2.字符串賦null不占內存
(事實上,應該是字符串在棧中占了內存,但是堆中沒有占內存,即棧中是存在字符串對象ss的,但是沒有引用任何堆中的內容)

3.全局變量會自動賦值(整形變量,自動賦值為0;如果是對象,自動賦值為null;String是對象)

4.局部變量不賦值不能通過編譯


如何計算java內存所占大小,參閱:https://www.jianshu.com/p/9d729c9c94c4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM