2011-03-20 202 views
0

我只是询问指令:的String [] []澄清

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

如果我创造这个变量“s”,将我创建2行2列字符串表? 或2个表格与2个元素? 感谢您的澄清。

+0

我将标记从android更改为java。这是一个java问题,而不是一个特定于android的问题。 – 2011-03-20 00:36:23

回答

2

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

  • 原始值(数字,字符和布尔)
  • 阵列(线性可转位的集合相同类型的变量)。
  • 类的对象(基本上是指定类型的命名变量的集合,连同一些方法,由类固定)。 (字符串就是这样的例子。)

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

因此,您可以拥有特定类的数组,其中包含数组类型作为类变量(字段)和数组数组,如下所示。

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

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

现在,您可以把这些null S变量的地方实际String对象,如果你想通过使用s[0][1] = "Hello";和类似声明。

正如其他答复者所说的那样,如果需要,这样的2D数组可以被视为具有行和列的表格,但是从语言的角度来看,这并不是什么特别的。

1

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

+0

数组数组?所以最后我们将有一个4列和4行s [2] [2]的数组! 2个数组中包含2个数组! – androniennn 2011-03-20 01:12:57

1

这将在技术上建立一个数组 - 长度为2的 - 串阵列的 - 也长度2.

的但对于所有的实际目的它可以为具有2行和2列创建表被认为。

+0

“长度2”是什么意思? 2行2列?为什么不简单地使用表?主要区别是什么? – androniennn 2011-03-20 01:10:54

+0

问题是,在java中没有内置的称为表的结构。所有存在的都是数组。一个数组就是你可以想象的只有一行的表,数组的长度就是它所具有的列的数量。 – 2011-03-20 14:59:23

+0

数组的长度是我想它的行数!不是它的专栏!没有? – androniennn 2011-03-20 23:23:24

3

它创建一个二维数组和两个维度的两个元素。

根据变量的唯一目的和它实际拥有的数据,您可以自由地解释整个任何你想要的方式。具有2列和2行的表(矩阵)非常好。

+0

请看我的第二个评论。 – androniennn 2011-03-20 00:46:29

+0

那么为什么简单地使用一张桌子!使用二维数组的主要目的是什么? – androniennn 2011-03-20 01:14:21

+0

目的是为了能够使用两个变量来引用特定数据。例如图。第一个变量是x轴,第二个是y轴。或者当然只是一个有行/列的表格(更好的词是矩阵或网格)。 – BalusC 2011-03-20 01:58:10

1

没有表格。

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

它实际上将创建一个矩阵,该矩阵是一个阵列的每个元素是一个数组... 阵列的一个:[] [] 阵列中的两个:[] []

+0

它是正确的解释:http://leepoint.net/notes-java/data/arrays/arrays-2D.html? – androniennn 2011-03-20 01:15:33

1

这是一个二维数组。就像写作

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

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

2

我认为你挂了哪个是一个真实的解释

实际上,它们有很多正确的解释或概念模型。哪一个是最合适/最有意义的取决于你在想的概念层面

  • 在语言/ JVM规范的层次上,您有一组字符串数组。

  • 在语法层面,您看起来像是一个二维数组的字符串,列和行。对于很多操作,它的行为完全像二维阵列。 (你可以做一些事情让你的String [] []不像传统的二维数组那样工作,例如,你可以替换一个行来给出一个“数组”,其中行的长度不同。只有当您“分配”整行时才会发生。)

  • 在应用程序级别,您可以将其视为表格...如果您想要。

您在一个评论中链接到的解释是正确的,所有答案也是如此。他们都在说(或试图说)同样的事情。 (。顺便说一句 - 这是@ BalusC的回答是说我只是在阐述)


所以,当你问:

如果我创造这个变量 “s”,我会创建一个2行2列的字符串表吗?或2个表格与2个元素?

...答案是,这些都是这些,这取决于你的观点,以及你的应用程序如何使用它们。从其他角度来看,它也是一串字符串数组,或者一个二维字符串数组。