例如,可以说我创建了一个单维数组,并将数组初始化为100.如果我希望能够像使用for循环一样使用数组的所有值,那我该怎么做呢?我在下面找到了两种方法,但我不确定哪种方法是推荐的。还有什么区别吗?哪个是在for循环中表示整个数组的正确方法?
int[] list = new int[100];
for (int i = 0; i < list.length; i++)
或
for (int i = 0; i < 100; i++)
这两个语法是比较常用的?
例如,可以说我创建了一个单维数组,并将数组初始化为100.如果我希望能够像使用for循环一样使用数组的所有值,那我该怎么做呢?我在下面找到了两种方法,但我不确定哪种方法是推荐的。还有什么区别吗?哪个是在for循环中表示整个数组的正确方法?
int[] list = new int[100];
for (int i = 0; i < list.length; i++)
或
for (int i = 0; i < 100; i++)
这两个语法是比较常用的?
这是好多了:
for (int i = 0; i < list.length; i++)
如果您改变了主意,并决定该列表必须是长度150的代替,那么你的代码的其余部分仍然有效。
另一种选择,需要你,如果你改变数组的长度在所有更改所有的for循环。
实际上没有其他区别。
编辑:作为his answer提到Manoj Sharma,有一件事可以做:
for (int myInt : list)
这将做迭代你,但你不能在循环中的索引。
我提到这个的完整性,但如果你发现这是很有帮助,给予好评他的答案!
最好是阵列的长度存储在变量中,然后使用它。而不是在循环中对其进行硬编码,或者每次循环运行时找到它。
var arraySize = yourArray.length;
for(i;i<arraySize; i++){
//your code here.
}
为什么它更好?从我尝试基准测试的经验来看,它几乎没有更快。仅有1%的平均值。但我没有做太多。 –
for (int i = 0; i < list.length; i++)
它是动态的条件处理,这将根据自己的阵列长度变化。
for (int i = 0; i < 100; i++)
它是静态条件处理,如果你有成千上万的for
循环,你需要改变每个循环条件。
埃维时间确保您避免在应用程序中硬编码。
在Java 8你好得多学习使用流。它们更直观,不需要担心尺寸等问题。
例如:
int list[] = {4, 7, 3, 9, 11};
Arrays.stream(list)...
在这种情况下Arrays.stream知道你已经创建了一个IntStream让你获得最大值,最小值,排序,总和等
您需要的for循环更频繁现在。
远高于@Anubian菜鸟给出的回答是不错的。但java5以后的java提供了增强的每个循环,这比其他更好。这种方法甚至没有错误的机会。下面看:
for(int i: list){
System.out.println(i);
}
这将循环通过整个阵列和阵列中的显示所有的元件存储。您也可以将此方法用于多维数组。
但缺点是你无法获得循环中的索引,如果你需要它可能会很烦人。尽管如此,有用。 –
它取决于条件,我们有while while循环也做。在某些情况下,while循环更好,然后循环。如果你不想要索引号相同,如果你只想要最快和最有效的没有错误证明结构然后去增强for循环而不是简单的循环。 –
是的,这取决于你的应用程序。这是更清洁和更容易使用,但有一些权衡。 –
第一个比较好。注意你应该定义并使用一个带有信息名称的常量,而不是声明一个具有*神奇数字的新数组*,即:'final int LIST_SIZE = 100;'然后是'int [] list = new int [LIST_SIZE ];'。 –