2015-01-06 28 views
2

例如,可以说我创建了一个单维数组,并将数组初始化为100.如果我希望能够像使用for循环一样使用数组的所有值,那我该怎么做呢?我在下面找到了两种方法,但我不确定哪种方法是推荐的。还有什么区别吗?哪个是在for循环中表示整个数组的正确方法?

int[] list = new int[100]; 
for (int i = 0; i < list.length; i++) 

for (int i = 0; i < 100; i++) 

这两个语法是比较常用的?

+0

第一个比较好。注意你应该定义并使用一个带有信息名称的常量,而不是声明一个具有*神奇数字的新数组*,即:'final int LIST_SIZE = 100;'然后是'int [] list = new int [LIST_SIZE ];'。 –

回答

10

这是好多了:

for (int i = 0; i < list.length; i++) 

如果您改变了主意,并决定该列表必须是长度150的代替,那么你的代码的其余部分仍然有效。

另一种选择,需要你,如果你改变数组的长度在所有更改所有的for循环。

实际上没有其他区别。

编辑:作为his answer提到Manoj Sharma,有一件事可以做:

for (int myInt : list) 

这将做迭代你,但你不能在循环中的索引。

我提到这个的完整性,但如果你发现这是很有帮助,给予好评他的答案!

+3

数组的list.length,'.size()'是'List'对象的属性。见http://stackoverflow.com/questions/9297899/arrays-length-property –

+0

哎呦我的坏! upvoted – holtc

+0

只是读取列表而没有看到它实际上是一个数组。傻我:) – holtc

0

最好是阵列的长度存储在变量中,然后使用它。而不是在循环中对其进行硬编码,或者每次循环运行时找到它。

var arraySize = yourArray.length; 

for(i;i<arraySize; i++){ 
//your code here. 
} 
+0

为什么它更好?从我尝试基准测试的经验来看,它几乎没有更快。仅有1%的平均值。但我没有做太多。 –

1

for (int i = 0; i < list.length; i++)它是动态的条件处理,这将根据自己的阵列长度变化。

for (int i = 0; i < 100; i++)它是静态条件处理,如果你有成千上万的for循环,你需要改变每个循环条件。

埃维时间确保您避免在应用程序中硬编码。

0

在Java 8你好得多学习使用流。它们更直观,不需要担心尺寸等问题。

例如:

int list[] = {4, 7, 3, 9, 11}; 
Arrays.stream(list)... 

在这种情况下Arrays.stream知道你已经创建了一个IntStream让你获得最大值,最小值,排序,总和等

您需要的for循环更频繁现在。

1

远高于@Anubian菜鸟给出的回答是不错的。但java5以后的java提供了增强的每个循环,这比其他更好。这种方法甚至没有错误的机会。下面看:

for(int i: list){ 
System.out.println(i); 
} 

这将循环通过整个阵列和阵列中的显示所有的元件存储。您也可以将此方法用于多维数组。

+1

但缺点是你无法获得循环中的索引,如果你需要它可能会很烦人。尽管如此,有用。 –

+0

它取决于条件,我们有while while循环也做。在某些情况下,while循环更好,然后循环。如果你不想要索引号相同,如果你只想要最快和最有效的没有错误证明结构然后去增强for循环而不是简单的循环。 –

+0

是的,这取决于你的应用程序。这是更清洁和更容易使用,但有一些权衡。 –

相关问题