当前位置: 首页 > 面试题库 >

Java中的数组声明和初始化。当数组的下标索引的位置在声明中更改时,数组的行为将有所不同

祁嘉言
2023-03-14
问题内容

以下是Java中显而易见的常用数组声明和初始化。

int r[], s[];       //<-------
r=new int[10];
s=new int[10];

[]在声明语句中更改的位置时,非常相似的情况会有所不同,如下所示。

int []p, q[];       //<-------
p=new int[10];
q=new int[10][10];

请看报关单。的位置[]已从更改r[][]p。在这种情况下,该数组的q行为类似于一个类型为数组的数组int(与前一种情况完全不同)。

问题: 为什么q在此声明int []p, q[];中将视为二维数组?

附加信息:

以下语法看起来很奇怪。

int []a[];

但是,这符合要求,并且行为类似于int a[][];int [][]a;

因此,以下情况都是有效的。

int [][]e[][][];
int [][][][][]f[][][][];

问题答案:

看一下JLS on
Arrays

[]可能显示为在声明的开头所述类型的部分,或作为说明符用于特定变量,或两者的一部分。

声明符中允许使用括号来表示C和C ++的传统。但是,变量声明的一般规则允许括号同时出现在类型和声明符中,以便局部变量声明:

float[][] f[][], g[][][], h[];  // Yechh!

等效于一系列声明:

float[][][][] f;
float[][][][][] g;
float[][][] h;

因此,例如:

int []p, q[];

只是

int[] p, q[]

实际上是

int p[]; int q[][]

其余的都差不多。



 类似资料:
  • 问题内容: 我可以写: 我也可以写: 但我不能写: 为什么这会被Java阻止? 我知道如何解决它,但有时会更简单。 例如: 自从我学会了如何在Java中玩数组以来,这个简单的问题一直困扰着我。 问题答案: 为什么这会被Java阻止? 你必须询问Java设计人员。该限制可能有一些微妙的语法原因。请注意,某些数组创建/初始化结构不在Java 1.0中,而(IIRC)是在Java 1.1中添加的。 但是

  • 问题内容: 如何在Java中声明和初始化数组? 问题答案: 你可以使用数组声明或数组文字(但只有当你立即声明并影响变量时,数组文字才能用于重新分配数组)。 对于原始类型: 例如,对于类,String是相同的: 当你首先声明数组然后对其进行初始化时,第三种初始化方法很有用。

  • 如何在Java中声明和初始化数组?

  • 当我在java中在方法之外的单独行上声明和构造一个数组时,我感到困惑,因此它将是一个实例变量,我得到一个编译错误,然而当我在一行上构造和初始化时,它是好的,为什么会发生这种情况? }

  • 本文向大家介绍Java 数组声明、创建、初始化详解,包括了Java 数组声明、创建、初始化详解的使用技巧和注意事项,需要的朋友参考一下 一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程

  • 问题内容: 看完之后,我才知道,是物体。数组的名称不是实际的数组,而只是引用。new运算符在堆上创建数组,并返回对新创建的数组对象的引用,然后将其分配给数组变量(名称)。类似于以下内容: 但是我也使用了这两种类型的数组声明。 和 以上两项均合法且可以正常工作。那么这两者之间有什么区别,我应该何时使用它们? 问题答案: 这将生成一个大小为5的数组,其中包含5个null元素: 如果这些值在编译时不是您