簡體   English   中英

為什么下面的代碼編譯沒有錯誤?

[英]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“數組數組”的行為類似於一維引用數組,每個引用都是對一維數組的引用。 原來,

  1. a[0]指的是{1,2,3}
  2. a[1]指的是{4,5}

但是引用 a[0]a[1]可以重新分配給任何其他int數組。 所以重新分配a[0] = a[1]是完全有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM