`
hwy1782
  • 浏览: 153815 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数组的一个问题

阅读更多

 

一道基础题
                int[] array = new int[5];
		String[][] argCopy = new String[2][2];
		int x;
		argCopy[0] = args;
		x = argCopy[0].length;
		for(int y = 0; y < x; y++){
			System.out.print(" "+argCopy[0][y]);
		}
args 输入为: 1 2 3 

 

 本以为,初始化的时候argCopy分配的空间大小为2*2.

因为args.length = 3,故argCopy[0] = args会导致数组越界。实际上程序可以运行。

 

  其实,在java中 数组就是理解为一个特定类型的类,是在堆中new新的空间。

 那么就可以理解argCopy[0] = args。

argCopy[0]是一个指向一个int数组类型对象的引用。而args也是一个int数组类型对象的引用。

 对象之间使用“=”,就是传递引用的意思。所以不存在越界的问题,

 因为argCopy[0]现在已经不是指向原来的长度为2的那个空间,而是指向新的args的那个空间。

 

下面两个例子

 

 

		int[][] a = new int [5][3];//长度为3
		
		int[] b = {12,34,56,23,56,7};//长度为6
		
		a[0] = b;//不越界
		for(int i=0;i<a[0].length;i++){
			System.out.print(a[0][i]+"  ");
		}
		

 

不同类型数组不能赋值(即类不同,肯定不能赋值了)

                int[] x = new int[5];
		String[] str = {"a","d","c","e"};
//		x = str;                      数组类型不同不能赋值
		for(int i=0;i<x.length;i++){
			System.out.print(x[i]+"  ");
		}
 

 

 

分享到:
评论

相关推荐

    将两个有序数组,合并成另一个有序的数组,升序

    在计算机科学和编程领域中,将两个有序数组合并成另一个有序数组是一个经典的算法问题。这个问题不仅在理论学习中占有重要地位,而且在实际应用中也非常普遍。对于这个任务,核心目标是将两个已经按照升序排列的整数...

    JS合并两个数组的3种方法详解

    这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返

    C++两个一维数组相加求和

    接下来,我们需要一个新数组`sum`来存储两个数组相加的结果。由于数组不能动态扩展,所以`sum`的长度应为`len1 + len2`,确保可以容纳所有元素。 在实现数组相加的过程中,我们使用两个独立的`for`循环。第一个循环...

    在多维数组中的特定维度和位置插入一个数组_matlab

    这个场景下,我们关注的是如何在多维数组中特定的维度和位置插入一个新的数组,这是一项非常实用的技能,特别是在处理图像、信号处理或者进行矩阵运算时。 标题所指的"在多维数组中的特定维度和位置插入一个数组",...

    有一个已排好序的数组,今输入一个数,要求按排序的规律将它插入数组中。

    为了解决上述问题,我们需要实现一个函数或程序,该程序能够接收一个已排序的数组和一个待插入的新元素,然后将新元素正确地插入到数组中相应的位置,使得插入后数组依然保持原来的排序顺序。 #### 四、具体实现...

    js中数组中相同的元素进行整合并创建一个新数组.pdf

    这个问题可以通过一个名为`sortArr`的函数来解决,它接收两个参数:一个数组(`arr`)和一个字符串(`str`),然后返回一个新的数组,其中的元素是原数组中具有相同属性值的对象的集合。 首先,让我们详细解析`...

    关于C#索引超出了数组界限的问题??

    在C#编程中,"索引超出了数组界限"是一个常见的错误,通常发生在尝试访问数组元素时,使用的索引值超过了数组定义的合法范围。数组的索引是从0开始的,因此一个包含n个元素的数组,其有效的索引范围是0到n-1。如果你...

    数组中最大和的子数组

    在编程领域,数组是最基本的数据结构之一,而寻找数组中最大和的子数组问题是一个经典的算法问题,它属于动态规划的范畴。这个问题的目标是找到数组中的一个连续子数组,使得这个子数组的所有元素之和最大。 首先,...

    2.编写一个函数print, 打印一个学生的成绩数组, 该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用p

    2.编写一个函数print, 打印一个学生的成绩数组, 该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。 3.有10个学生,每个学生的数据包括学号、姓名、3...

    Java数组越界问题实例解析

    在上面的例子中,我们定义了一个二维数组,数组的长度和初始值都是在编译时确定的。 然而,在使用数组时,我们容易犯的一个错误就是数组越界。例如: ```java int[][] array = {{1,2,3},{1,4}}; System.out....

    从n个数组中取出所有排列组合(Java实现)

    在编程领域,数组排列组合问题是一个经典的问题,它涉及到算法设计和数据结构的理解。这个问题的主要目标是从给定的n个数组中找出所有的可能排列组合。Java作为一种强大的编程语言,提供了丰富的工具和方法来解决...

    一维数组滤波_一维数组滤波_

    文件名"一维数组滤波.vi"很可能是一个LabVIEW虚拟仪器(VI),它包含了实现上述滤波过程的程序代码和用户界面。在LabVIEW中,数据通常以图表或波形显示,用户可以通过直观的图形化编程来设计滤波算法。 使用LabVIEW...

    将两数组合并成一个数组并排序

    在这个场景中,我们要讨论如何在C语言中将两个已排序的数组合并成一个新的排序数组。 首先,让我们了解数组的基本概念。数组是由相同类型元素构成的集合,可以通过索引来访问每个元素。在C语言中,数组的声明通常...

    求助!有关数组存取问题

    例如,在Java中,可以这样定义一个整型数组: ```java int[] numbers = new int[5]; ``` 数组的初始化可以在定义时完成,也可以在后续代码中逐一赋值。 2. **数组索引** 数组中的每个元素都有一个唯一的索引,...

    用数组实现约瑟夫出圈问题

    约瑟夫出圈问题,又称为约瑟夫环问题,是一个经典的理论计算机科学问题,源自古罗马的一个传说。在这个问题中,人们围成一个圈,按照一定的规则进行报数,报到特定数值的人会被淘汰,然后剩下的人继续报数,直到只...

    第7章 数组-9数组下标越界问题分析1

    数组的下标是从0开始的,因此一个长度为N的一维数组,其有效的下标范围是0到N-1。如果尝试访问下标小于0或者大于等于N的元素,就会发生下标越界错误。这种错误在编译期间通常不会被检测出来,因为编译器默认程序员...

    求一个数组中第K个最大值和最小值

    标题中的“求一个数组中第K个最大值和最小值”是一个常见的算法问题,这个问题在计算机科学和编程领域中有着广泛的应用。它涉及到数组处理、排序以及数据查找等基本概念。接下来,我们将深入探讨这个问题的解决方案...

    07-Java基础(数组-常见问题)

    // 声明一个整型数组 arr = new int[5]; // 初始化数组,长度为5 ``` 初始化时也可以同时赋值: ```java int[] arr = {1, 2, 3, 4, 5}; // 声明并初始化数组 ``` 2. **数组长度** `length`属性是所有数组都...

    现有1~100共一百个自然数,已随机放入一个有98个元素的数组a[98]

    标题 "现有1~100共一百个自然数,已随机放入一个有98个元素的数组a[98]" 暗示了一个编程问题,其中涉及到数组、随机数和计数算法。在这个问题中,我们需要处理一个大小为98的数组`a`,其元素是从1到100的一百个...

    约瑟夫问题数组方法解决

    约瑟夫问题的基本设定如下:有n个人围成一个圈,从第一个人开始报数,数到m的人将被淘汰出圈,然后从下一个人继续报数,直到最后只剩一个人为止。问题的核心在于找出最后一个存活的人的位置。 #### 数组方法解决...

Global site tag (gtag.js) - Google Analytics