首先看下面的**:
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.對於編號相等的長方形,按照長方形的長...