我是java的新手,并试图了解以下内容。数组的长度不一样。代码仍然执行没有任何错误。我不明白为什么。如果有人可以澄清。
public class Practice {
public static void main(String[] args){
int [][] a = {{1,2,3},{4,5}};
a[0] = a[1];
}
}
答案 0 :(得分:9)
SmsCom.ExecCommand("AT+CMGS=42<CR>07915892000000F001000B915892214365F7000021493A283D0795C3F33C88FE06CDCB6E32885EC6D341EDF27C1E3E97E72E" + char.ConvertFromUtf32(26), 300, "Messagenot sent " + Portname + ".");
和a[0]
都是int数组(即它们的类型是a[1]
),因此可以将一个分配给另一个,无论它们引用的当前数组的长度如何到。
您的代码与以下代码没有太大区别:
int[]
或者从这段代码:
int [] a = {1,2,3};
int [] b = {4,5}
a = b;
在这两种情况下(如在原始代码中),您正在更改引用类型变量的值以引用其他对象。
答案 1 :(得分:2)
您可以使用与重新分配数组变量相同的方式为数组(a[0] = a[1]
)分配不同大小的数组:
int[] x = new int[5];
x = new int[6];
因此,由于这是允许的,因此将a[1]
分配给a[0]
没有问题。
最后,它只是对初始数组所持有的引用的更改。
答案 2 :(得分:1)
与C和C ++不同,Java“数组数组”的行为类似于一维引用数组,每个引用都是对一维数组的引用。最初,
a[0]
指的是{1,2,3} a[1]
指的是{4,5} 但引用 a[0]
和a[1]
可以重新分配给int
的任何其他数组。因此,重新分配a[0] = a[1]
完全有效。