多個引用型別的變數「引用」同乙個物件意味著什麼

2021-06-19 04:53:32 字數 547 閱讀 8405

首先看下面的**:

package com.heima.vo;

public class test

;//標記1

int array2 =array1;//標記2

array2[1]=100;//標記3

system.out.println("array1[1]="+array1[1]);//標記4     }

}如果執行了上面的**會輸出什麼?array1[1]=2還是array1[1]=100?

原因:當**執行到標記1的時候,array1處於棧空間中,new出來的陣列存在於堆空間中;array1引用了new出來的陣列的記憶體位址。

當**執行到標記2的時候,array2處於棧空間中,array2也引用了new出來的陣列的記憶體位址,即array1和array2均引用了new出來的陣列的記憶體位址,至此出現了多個陣列型別的變數「引用」同乙個陣列物件。

當**執行到標記3的時候,堆空間中陣列物件的第二個元素開始變為100。

當**執行到標記4的時候,由於兩個變數引用同乙個陣列物件所以結果為array1[1]=100。

物件為引用型別,物件間的賦值只是對同乙個資料的引用

js變數型別 值型別 和 引用型別 值型別 字串string,數值number,布林值boolean,null,undefined 引用型別 物件 object,陣列array,函式function 賦值 值型別賦值 直接將資料複製乙份進行賦值,兩份資料在記憶體中是完全獨立的 引用型別賦值 只是將資...

JAVA兩個引用指向同乙個陣列

在這段程式中,arrayb是通過arraya賦值得到的,並不是new出來的,所以他們內部儲存的位址值是一樣,他們指向的是同乙個陣列。注 陣列在程式執行當中,長度是不能改變的。arraya與arrayb即為引用。可以理解為c語言中的指標,都是儲存乙個記憶體位址值,指向一塊記憶體。引用與指標的區別 1....

一種排序 引發 java兩個引用指向同乙個物件

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在有很多長方形,每乙個長方形都有乙個編號,這個編號可以重複 還知道這個長方形的寬和長,編號 長 寬都是整數 現在要求按照一下方式排序 預設排序規則都是從小到大 1.按照編號從小到大排序 2.對於編號相等的長方形,按照長方形的長...