前几天一直纠结一个关于java 二维数组的问题:在递归函数里将一个二维数组放到list里面,本来很简单的几行代码但是跑出来的结果就是不对。二维数组的clone函数返回来的数据并不是新分配的堆内存,而是对之前的二维数组的一个引用。代码如下:
import java.util.ArrayList;
import java.util.List;
public class Test2 {
private static int[][] intArray;
/**
* @param args
*/
private static List<int[][]> list;
public static void main(String[] args) {
// TODO Auto-generated method stub
list = new ArrayList<int[][]>();
int count=0;
intArray = new int[1][2];;
rescusion(count);
for(int i=0;i<list.size();i++) {
int a[][] = list.get(i);
System.out.print(a[0][0]+",");
}
}
private static void rescusion(int count) {
if(count>10) {
return ;
}
Test2.intArray[0][0] = count;
Test2.intArray[0][1] = count;
// Test2.intArray = {{0,0}};
//list.add(Test2.intArray.clone());
int[][] temp1 = Test2.intArray.clone(); //直接拷贝 ....不能正确的输出值
int[][] temp2 = {{count,count}}; //分配一个新的地址....可以正确的输出值
int[][] temp3 = new int [Test2.intArray.length][2];//分配一个新的地址.....不能正确的输出值
temp3 = Test2.intArray.clone();
list.add(temp2);
//list.add(temp2);
count+=2;
rescusion(count);
}
}
分享到:
相关推荐
例如,二维数组可以用来表示表格数据,创建二维数组的语法是`类型[][] arrayName = new 类型[行数][列数];`。如`int[][] matrix = new int[3][4];`创建了一个3行4列的二维数组。 4. **命令行参数**: 在Java程序中...
Java支持多维数组,例如二维数组可以看作是数组的数组: ```java int[][] multiArray = new int[3][4]; ``` 访问二维数组的元素: ```java int value = multiArray[1][2]; // 访问第二行第三列的元素 ``` 6...
6. 多维数组:矩阵或表格通常使用二维数组表示,即数组的数组。 7. 一维视角:如果将二维数组视为一维数组,那么数组的元素是包含多个元素的一维数组。 8. 下标类型:Java中数组的下标是整数,数据类型是`int`。 ...
- 双重循环:处理多维数组,如二维数组。 - 使用`break`和`continue`语句控制循环流程,提前退出或跳过当前迭代。 6. **数组的复制**: - `System.arraycopy()`方法用于将一个数组的一部分或全部复制到另一个...
数组的长度是固定的,一旦创建就不能更改。数组元素可以通过索引访问,索引从0开始,例如`arr[0]`表示数组的第一个元素。 在Java中,数组还支持一些高级操作,例如多维数组。例如,`String[][] ss = new String[2]...
6. 二维数组:二维数组可以用来表示矩阵或表格,每个元素本身又是一个一维数组。在二维数组中,可以理解为行和列,行的长度可以不同,但每一列的元素数量必须相同。 7. foreach循环:Java中的foreach循环,也称为...
6. **二维数组**:矩阵或表格通常用二维数组表示,每个元素又是一维数组,可以理解为数组的数组。 7. **下标数据类型**:Java中数组下标的类型是整型,只接受整数值作为索引。 8. **foreach循环**:Java的foreach...
例如,二维数组`int[][] y`是一个数组,其元素是其他数组。数组的维数可以达到255维。多维数组的初始化可以是规则的(所有子数组长度相同)或不规则的(子数组长度不同)。不规则数组需要逐层分配空间,如`int[][] w...
二维数组,也就是多维数组,可以理解为数组的数组。定义方式如下: ```java int two[][] = new int[4][5]; ``` 这将创建一个4行5列的二维数组。还有其他定义方式,例如: ```java int two[][] = {{1, 2, 3, 4}, {0, ...
6. 二维数组:矩阵或表格通常用二维数组表示,它是由多个一维数组组成的。 7. 一维数组视角:如果将二维数组看作一维数组,那么数组的元素是一维数组。 8. 下标类型:Java中数组的下标是整型数据。 9. 无下标访问...
Java支持多维数组,例如二维数组(矩阵): ```java int[][] matrix = new int[3][3]; for (int i = 0; i ; i++) { for (int j = 0; j ; j++) { matrix[i][j] = i * 3 + j + 1; // 填充1到9的数字 } } ``` 五、...
常见的有二维数组,常用于表示表格或矩阵。声明和初始化二维数组如下: int[][] arr2D = new int[3][4]; 或者 int[][] arr2D = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}。 四、数组操作 1. 遍历:通过for循环遍历数组的...
6. 多维数组:矩阵或表格一般用二维数组表示,即数组的元素是数组。 7. 下标类型:Java中数组的下标的数据类型是整型(int)。 8. 不用下标访问:数组可以通过`Arrays.toString()`方法不使用下标变量打印数组内容。 ...
Java支持多维数组,如二维数组代表一个矩阵,声明方式如 `int[][] matrix = new int[3][4]`,访问元素使用两个索引,如 `matrix[1][2]`。 6. **数组操作方法**: - `length` 属性:返回数组的长度,例如 `numbers...
- **知识点**: 二维数组的定义和初始化需要注意行和列的数量是否匹配。选项C中第二维的长度未指定,不符合语法规范。 4. **数组下标类型** - **知识点**: 数组下标可以是整型常量、变量或表达式。 5. **数组...
Java支持多维数组,如二维数组,可以看作数组的数组。例如: ```java int[][] matrix = new int[3][4]; ``` 6. **数组的复制** `System.arraycopy()`方法可用于复制数组的一部分或全部。另外,`clone()`方法...
例如,二维数组可以看作是表格形式的数据存储: ```java int[][] multiArray = new int[3][4]; for (int i = 0; i ; i++) { for (int j = 0; j [i].length; j++) { multiArray[i][j] = i * j; } } ``` 7. *...
对于多维数组,如二维数组,初始化时可以使用嵌套的大括号,例如`int[][] arr = {{1, 2}, {3, 4}}`。 选择题中涉及的问题包括数组初始化的语法错误、数组元素的引用、数组元素的个数计算以及数组操作等。例如,错误...
Java数组是程序设计中基础且...18. 错误的说法是AC("="不能完全复制数组,需要使用arraycopy或clone方法)。 这些知识点涵盖了Java数组的基本概念、操作、异常处理和优化等方面,对于理解和使用Java数组至关重要。