Simple Java—Strings and Arrays(六)Java中的null值是什麼?

Translate from Simple java

Java中的null值是什麼?

讓我們從一個變量聲明開始:

String x = null;


1. 這個變量聲明做了什麼?

回憶一下什麼是變量,什麼是。一個常用的比喻是,變量就如同一個盒子,跟我們可以用盒子存儲東西一樣,我們可以用變量來存。當聲明一個變量時,我們需要設定它存儲的類型。

Java中有兩個主要的數值類型:基本型和引用型。基本類型的變量存儲值;引用類型的變量存儲對象的引用(即對象在內存中地址)。在這個例子中,初始化聲明的變量“x”爲引用型變量,它存儲String的引用。在這裏它爲null。

下面的圖更好的展示了這個概念:
這裏寫圖片描述

如果x=”abc”
這裏寫圖片描述

2. null在內存中是什麼?

那麼,準確來說,null在內存中到底是什麼呢?或者說Java中null的值是什麼?

首先,null不是一個有效的對象實例,所以沒有內存會分配給它。它僅僅是一個表示引用現在沒有分配給這個對象的值。

引自JVM Specifications

Java虛擬機規範並沒有規定一個確定的值來表示null

具體的值要看jvm實現產商,所以我可以假定任何一個值來表示null,譬如和c語言一樣,用全0來表示。

3. null在內存的什麼地方?

現在我們知道了null是什麼,我們也知道了變量就是一個存儲單元加上一個名字(標識符),可以用來放值。那麼x到底在內存的哪個位置呢?

the diagram of jvm run-time data areas我們可以知道,方法都放在當前線程空間的棧中,而每一個方法放在棧中一個私有的幀裏面,所以這個變量放在幀當中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章