[英]Why does the following code compile without error?
我是java新手並試圖理解以下內容。 數組的長度不一樣。 代碼仍然執行沒有任何錯誤。 我不明白為什么。 如果有人可以澄清。
public class Practice {
public static void main(String[] args){
int [][] a = {{1,2,3},{4,5}};
a[0] = a[1];
}
}
a[0]
和a[1]
都是int數組(即它們的類型是int[]
),因此可以將一個分配給另一個,而不管它們所指的當前數組的長度如何。
您的代碼與以下代碼沒有太大區別:
int [] a = {1,2,3};
int [] b = {4,5}
a = b;
或者從這段代碼:
Object a = ...
Object b = ...
a = b;
在這兩種情況下(如在原始代碼中),您正在更改引用類型變量的值以引用其他對象。
你可以將一個不同大小的數組分配給一個數組( a[0] = a[1]
),就像你可以像這樣重新分配一個數組變量一樣:
int[] x = new int[5];
x = new int[6];
因此,由於這是允許的,所以將a[1]
分配給a[0]
是沒有問題的。
最后,它只是初始數組所包含的引用的更改。
與C和C ++不同,Java“數組數組”的行為類似於一維引用數組,每個引用都是對一維數組的引用。 原來,
a[0]
指的是{1,2,3} a[1]
指的是{4,5} 但是引用 a[0]
和a[1]
可以重新分配給任何其他int
數組。 所以重新分配a[0] = a[1]
是完全有效的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.