如何在Java 9的JShell中宣告引用型別?


JShell 是Java 9中一個互動式工具,允許使用者輸入、評估並向用戶列印輸出。

與值型別不同,引用型別不會直接儲存其值。相反,它將儲存值的地址。這意味著引用型別包含一個指向儲存資料的另一個記憶體位置的指標。引用型別包括字串、陣列、類委託

在下面的程式碼片段中,當我們建立一個新的Animal例項時,它可以在堆記憶體中建立。new Animal()在堆上建立一個物件。Animal@73846619,該物件儲存在堆的地址73846619處。

程式碼片段1

jshell> class Animal {
   ...> }
| created class Animal

jshell> Animal dog = new Animal();
dog ==> Animal@73846619


在下面的程式碼片段中,在堆上建立了兩個新的Animal物件。它們的記憶體位置(引用)儲存在引用變數dogcat中。在Java中,所有類都是引用型別。除原始變數例項外,所有例項或物件都儲存在堆中。物件的引用儲存在像dogcat這樣的引用變數中。

程式碼片段2

jshell> class Animal {
   ...>    int id;
   ...>    public Animal(int id) {
   ...>       this.id = id;
   ...>    }
   ...> }
| created class Animal

jshell> Animal dog = new Animal(10);
dog ==> Animal@6adede5

jshell> Animal cat = new Animal(20);
cat ==> Animal@5025a98f


在下面的程式碼片段中,“j = I”將“I”的值複製到“j”。之後,當“j”的值改變時,“I”不受影響。使用原始變數比較它們的值。

程式碼片段3

jshell> int i = 5;
i ==> 5

jshell> int j;
j ==> 0

jshell> j = i;
j ==> 5

jshell> j = 10;
j ==> 10

jshell> i;
i ==> 5

jshell> i == j;
$11 ==> false

jshell> j = 5;
j ==> 5

jshell> i == j;
$13 ==> true

更新於:2020年4月24日

139 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.