String [] []澄清

时间:2011-03-20 00:20:13

标签: java arrays string

我只是问这个指示:

String[][] s = new String[2][2];

如果我创建此变量“s”,我将创建一个包含2行和2列的字符串表吗? 还是2个包含2个元素的表格? 谢谢你的澄清。

7 个答案:

答案 0 :(得分:3)

它创建了一个二维数组,其中包含两个维度中两个元素的数组。

根据变量的唯一目的和它实际拥有的数据,您可以随心所欲地解释整个变量。具有2列和2行的表(矩阵)非常精细。

答案 1 :(得分:2)

Java没有内置数据类型,唯一的基本类型类型(元类型?)

  • 原始值(数字,字符和布尔值)
  • 数组(相同类型的变量的线性可索引集合)。
  • 类的对象(基本上是指定类型的命名变量的集合,以及一些由类修复的方法)。 (字符串就是这样的例子。)

其他一切必须由这些类型组成。 (为了使这一点复杂化,数组类型都被认为是java.lang.Object的子类型,它是所有其他类继承的类。)

因此,您可以拥有特定类的数组,具有数组类型作为类变量(字段)的类,以及数组数组,如此处所示。

您的String[][]类型由String数组组成,new String[2][2]数组创建表达式创建一个长度为2的数组,每个元素本身就是一个长度为2的数组。这些数组的每个元素都可以是一个字符串,但在创建时它首先是null

 s --> [ 0 ,  1 ]
         |    '----> [ null, null ]
         |
         '---------> [ null, null ]

如果您愿意,现在可以使用null和类似的声明,将这些Strings[0][1] = "Hello";个对象的引用置于其中。

正如其他回答者所说,如果你愿意的话,这样的2D数组可以看作是一个包含行和列的表,但从语言的角度来看,它并没有什么特别之处。

答案 2 :(得分:2)

我认为你已经挂断了一个真正的解释

实际上,它们是许多正确的解释或概念模型。哪一个最合适/最有意义取决于您正在考虑的概念级别

  • 在语言/ JVM规范级别,您有一个字符串数组数组。

  • 在句法层面,你有一些看起来像二维数组的字符串,有列和行。对于许多操作,它的行为与2-D阵列完全相同。

    (你可以做的事情是让你的String [] []的行为不像传统的二维数组。例如,你可以替换一行来给出一个“数组”,其中行的长度不同。但是只有在“分配”整行时才会发生。)

  • 在应用程序级别,您可以将所有内容视为一个表...如果您愿意。

您在其中一条评论中链接的说明是正确的,所有答案也是如此。他们都在说(或试图说)同样的事情。

(顺便说一句 - 这是@BalusC的答案所说的。我只是在详细阐述。)


所以当你问:

  

如果我创建此变量“s”,我将创建一个包含2行和2列的字符串表吗?还是2个包含2个元素的表?

......答案是,根据您的观点,以及您的应用程序如何使用它们,它们是同样的。从其他角度来看,它也是一个字符串数组或一个二维字符串数组。

答案 3 :(得分:1)

您正在创建一个二维数组。这是一个数组数组。

答案 4 :(得分:1)

这将在技术上创建一个长度为2的数组 - 字符串数组 - 长度为2。

但是出于所有实际目的,可以将其视为创建一个包含2行和2列的表。

答案 5 :(得分:1)

没有桌子。

有一个数组,数组只是对实际存储变量的内存的引用。

它实际上会创建一个矩阵,该矩阵是一个数组,每个元素都是一个数组...... 数组一:[] [] 数组二:[] []

答案 6 :(得分:1)

这是一个2D数组。就像写

一样
String [][] s = new  String[2][];
s[0] = new String[2];
s[1] = new String[2];

所以我认为你的选择都是正确的。