`
crackajack_zg
  • 浏览: 53980 次
社区版块
存档分类
最新评论

java二维数组不能用clone

 
阅读更多
前几天一直纠结一个关于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);
	}

}


分享到:
评论

相关推荐

    java数组教学及练习

    例如,二维数组可以用来表示表格数据,创建二维数组的语法是`类型[][] arrayName = new 类型[行数][列数];`。如`int[][] matrix = new int[3][4];`创建了一个3行4列的二维数组。 4. **命令行参数**: 在Java程序中...

    Java 数组练习

    Java支持多维数组,例如二维数组可以看作是数组的数组: ```java int[][] multiArray = new int[3][4]; ``` 访问二维数组的元素: ```java int value = multiArray[1][2]; // 访问第二行第三列的元素 ``` 6...

    java数组练习题目 (2).pdf

    6. 多维数组:矩阵或表格通常使用二维数组表示,即数组的数组。 7. 一维视角:如果将二维数组视为一维数组,那么数组的元素是包含多个元素的一维数组。 8. 下标类型:Java中数组的下标是整数,数据类型是`int`。 ...

    使用循环操作Java中的数组共3页.pdf.zip

    - 双重循环:处理多维数组,如二维数组。 - 使用`break`和`continue`语句控制循环流程,提前退出或跳过当前迭代。 6. **数组的复制**: - `System.arraycopy()`方法用于将一个数组的一部分或全部复制到另一个...

    你真的了解Java中的数组吗1

    数组的长度是固定的,一旦创建就不能更改。数组元素可以通过索引访问,索引从0开始,例如`arr[0]`表示数组的第一个元素。 在Java中,数组还支持一些高级操作,例如多维数组。例如,`String[][] ss = new String[2]...

    Java_数组练习答案 (2).pdf

    6. 二维数组:二维数组可以用来表示矩阵或表格,每个元素本身又是一个一维数组。在二维数组中,可以理解为行和列,行的长度可以不同,但每一列的元素数量必须相同。 7. foreach循环:Java中的foreach循环,也称为...

    Java_数组练习答案 (2).docx

    6. **二维数组**:矩阵或表格通常用二维数组表示,每个元素又是一维数组,可以理解为数组的数组。 7. **下标数据类型**:Java中数组下标的类型是整型,只接受整数值作为索引。 8. **foreach循环**:Java的foreach...

    Java数组分析

    例如,二维数组`int[][] y`是一个数组,其元素是其他数组。数组的维数可以达到255维。多维数组的初始化可以是规则的(所有子数组长度相同)或不规则的(子数组长度不同)。不规则数组需要逐层分配空间,如`int[][] w...

    第三章JAVA 中的数组及字符串.doc

    二维数组,也就是多维数组,可以理解为数组的数组。定义方式如下: ```java int two[][] = new int[4][5]; ``` 这将创建一个4行5列的二维数组。还有其他定义方式,例如: ```java int two[][] = {{1, 2, 3, 4}, {0, ...

    Java 数组练习答案.doc.docx

    6. 二维数组:矩阵或表格通常用二维数组表示,它是由多个一维数组组成的。 7. 一维数组视角:如果将二维数组看作一维数组,那么数组的元素是一维数组。 8. 下标类型:Java中数组的下标是整型数据。 9. 无下标访问...

    Java 实例 - 数组填充源代码-详细教程.zip

    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的数字 } } ``` 五、...

    04_Java基础语法_(数组)_讲义

    常见的有二维数组,常用于表示表格或矩阵。声明和初始化二维数组如下: int[][] arr2D = new int[3][4]; 或者 int[][] arr2D = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}。 四、数组操作 1. 遍历:通过for循环遍历数组的...

    Java数组练习题目.pdf

    6. 多维数组:矩阵或表格一般用二维数组表示,即数组的元素是数组。 7. 下标类型:Java中数组的下标的数据类型是整型(int)。 8. 不用下标访问:数组可以通过`Arrays.toString()`方法不使用下标变量打印数组内容。 ...

    java数组练习与学习

    Java支持多维数组,如二维数组代表一个矩阵,声明方式如 `int[][] matrix = new int[3][4]`,访问元素使用两个索引,如 `matrix[1][2]`。 6. **数组操作方法**: - `length` 属性:返回数组的长度,例如 `numbers...

    Java数组练习题(带答案).doc

    - **知识点**: 二维数组的定义和初始化需要注意行和列的数量是否匹配。选项C中第二维的长度未指定,不符合语法规范。 4. **数组下标类型** - **知识点**: 数组下标可以是整型常量、变量或表达式。 5. **数组...

    暑假培训学习笔记之java数组

    Java支持多维数组,如二维数组,可以看作数组的数组。例如: ```java int[][] matrix = new int[3][4]; ``` 6. **数组的复制** `System.arraycopy()`方法可用于复制数组的一部分或全部。另外,`clone()`方法...

    19.java数组.zip

    例如,二维数组可以看作是表格形式的数据存储: ```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. *...

    Java数组练习题(带答案)培训讲学.pdf

    对于多维数组,如二维数组,初始化时可以使用嵌套的大括号,例如`int[][] arr = {{1, 2}, {3, 4}}`。 选择题中涉及的问题包括数组初始化的语法错误、数组元素的引用、数组元素的个数计算以及数组操作等。例如,错误...

    Java数组练习题(带答案).docx

    Java数组是程序设计中基础且...18. 错误的说法是AC("="不能完全复制数组,需要使用arraycopy或clone方法)。 这些知识点涵盖了Java数组的基本概念、操作、异常处理和优化等方面,对于理解和使用Java数组至关重要。

Global site tag (gtag.js) - Google Analytics