2010-09-23 87 views
3

这只是一个简单的问题,我无法在文档中找到答案!Java数组创建

String args[] = new String[0]; 
args[0] = "test"; 

这是正确的吗?这是否创建一个具有1个元素或0个元素的数组?

谢谢,我知道,愚蠢的问题,但我无法在Java文档中找到答案。

+3

您正在查找的文档可能是[this](http://download.oracle。com/javase/tutorial/java/nutsandbolts/arrays.html) – 2010-09-23 14:22:42

+0

是的!当我看着 – 2010-09-23 14:27:54

+1

当你尝试它时发生了什么? – 2010-10-07 08:21:45

回答

7

这将创建一个长度为0的数组。第二行将给出ArrayIndexOutOfBoundsExpection

3

您的代码是错误的。第一个数字规定的阵列的长度,所以它应该是1

String args[] = new String[1]; 

在阵列中的第一个元素被标记为myArray的[0]

8

String[] arr = new String[]{"test"}

1

是的它似乎有点奇怪 - 当你创建数组时,你声明了数组有多少个元素,所以0表示没有元素。然而,当你遍历一个数组时,第一个元素是第0个元素而不是第1个元素......请记住,大小/长度与索引不同。

0

长度5的阵列与创建的:

String myArray[] = new String[5]; 

此数组中的项都使用索引0,1,2,3,4 - 注意,它们开始在索引0处,而不是索引1,等等(数组长度 - 1)。

所以

new String[0] 

创建长度为0到分配索引0会导致错误的阵列 - 有数组中没有位置分配给。

​​3210

将产生长度为1的阵列,其中在索引0处的单一位置,这样,那么您可以合法做:

myArray[0] = "happy days"; 
+0

语言具有从零开始的数组索引是有技术意义的。但是,这导致了不计其数的错误。 – 2010-09-23 23:48:23

0
String args[] = new String[0]; 

这产生没有元素的阵列。访问任何元素,即使是args[0],都会导致ArrayIndexOutOfBoundsException。阵列的组件数量可在args.length中找到。

String args[] = new String[1]; 

这将创建一个包含1个元素的数组。元素访问为args[0]。第一个元素总是在索引0处。访问任何其他元素将导致ArrayIndexOutOfBoundsException

String args[] = new String[10]; 

这创建了一个包含10个元素的数组。第一个元素是args[0],最后一个元素是args[9]。最后一个位置总是小于数组的大小。

参考文献:

0

new String[x]将创建字符串与大小x空数组。 当x = 0时,你的Array将有没有条目,所以任何试图访问它的元素都会导致异常。 如果你想要它有一个元素,你应该指定你想要的一个元素:new String[1]会创建一个带有1个条目的字符串数组。

虽然上述参数指定尺寸数组的,以后使用一个是索引。 在许多语言中,[]用于索引(常规使用)和大小(创建数组时),这可能会造成混淆。

简单的规则:一个有效的索引将永远是> = 0和<大小的数组。

0 <= index < size

的指数,也称为偏移,是你去从一开始就多远 - 许多元素融入你一步数组如何。

2

如果你正在试图做的PHP类相当于ARGS [] =“新条目”的再看一看

List<String> args = new ArrayList<String>(); 
args.add("test"); 
args.add("and some more"); 
args.add("and even more"); 

这工作得很好,并会自动扩展您的列表。当你需要将其转换为一个数组,你可以使用:

String[] argArray = args.toArray(new String[args.size()]); 
0

String args[] = new String[0];

创建大小0也被称为一个数组的数组。由于该数组不包含任何元素,因此不能使用索引,包括0。使用的任何索引就会导致java.lang.ArrayIndexOutOfBoundsException

-1

这里是一个简单的&官方example

+0

1)避免仅链接答案。如果链接失效,答案是毫无价值的。 2)这个问题已经回答了(并且已经有很多答案) – 2013-03-21 09:02:53

+0

好的。我还在学习。 – easoncxz 2013-03-21 09:24:29

+0

Downvoting是stackoverflow如何工作的一部分,您必须接受,如果downvote带有解释。把我的问题作为复仇来回报并不是很有成效。 – 2013-03-21 15:41:06