Mr *_*rte 2 java vector matrix variable-length
例如:
int[][] matrix = new int[3][1];
int[] vector = {1,2,3,4,5};
matrix[0] = vector;
Run Code Online (Sandbox Code Playgroud)
它编译并正常运行,即使vector它的长度大于一条线的长度matrix.
为什么Java接受这个?
这个
int[][] matrix = new int[3][1];
Run Code Online (Sandbox Code Playgroud)
定义数组int数组.具体来说,它定义了一个大小的数组3.然后,通过引用大小为1的新数组来初始化这三个元素中的每一个,其中该元素用值0初始化.
当你这样做的时候
matrix[0] = vector;
Run Code Online (Sandbox Code Playgroud)
您正在为索引0中的元素分配存储的参考值的副本vector(其中引用了int[]5个元素)matrix.
因为图纸很有趣:
int[][] matrix = new int[3][1];
Run Code Online (Sandbox Code Playgroud)
可以说明为
0x0001 -> int[][] of size 3, elements = [0x0123, 0x0456, 0x0789]
[address]
0x0123 -> int[] of size 1, elements = [0]
0x0456 -> int[] of size 1, elements = [0]
0x0789 -> int[] of size 1, elements = [0]
matrix = 0x0001
Run Code Online (Sandbox Code Playgroud)
其中0x0001,0x0123,0x0456,和0x0789是的基准值的例子(认为它作为一个地址到一个对象).
这个
int[] vector = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)
添加一个新的 int[]
0x9999 -> int[] of size 7, elements = [1,2,3,4,5]
vector = 0x9999
Run Code Online (Sandbox Code Playgroud)
和
matrix[0] = vector;
Run Code Online (Sandbox Code Playgroud)
做到了
0x0001 -> int[][] of size 3, elements = [0x9999, 0x0456, 0x0789]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |