for(int i : x) 是做啥的? [复制]

Posted

技术标签:

【中文标题】for(int i : x) 是做啥的? [复制]【英文标题】:What does for(int i : x) do? [duplicate]for(int i : x) 是做什么的? [复制] 【发布时间】:2015-06-17 18:57:57 【问题描述】:

我是 Java 新手。我正在阅读某人对问题的解决方案,我遇到了这个问题:

        int[] ps = new int[N];
        for (int i = 0; i < N; i++)
            ps[i] = input.nextInt();

        int[] counts = new int[1005];
        for (int p : ps)
            counts[p]++;

最后两行是做什么的?

【问题讨论】:

变量p 覆盖数组ps。你可以玩一下它,看看它是如何工作的,例如在循环中打印p 的值。 这是增强的 for 循环。 p 是一个局部变量 【参考方案1】:

这是一个 for-each 循环。它将p 设置为ps 的第一个元素,然后运行循环体。然后将p 设置为ps 的第二个元素,然后运行循环体。以此类推。

大概是以下简称:

for(int k = 0; k < ps.length; k++)

    int p = ps[k];
    counts[p]++;

【讨论】:

【参考方案2】:

For-each 循环(高级或增强型 For 循环):

Java5 中引入的 for-each 循环。主要用于遍历 数组或集合元素。 for-each 循环的优点是 它消除了错误的可能性并使代码更 可读。

语法

for(data_type variable : array | collection)  

来源:Java For Each Loop

在您的情况下,此循环正在迭代 Array

没有 For Each 循环的等效代码

for (int i=0;i<ps.length;i++)
int p=ps[i];
counts[p]++;


        

【讨论】:

p 不是数组ps的元素的索引 @singhakash,我试图向他解释 For-Each 循环,计数器如何递增,没有进行逻辑解释,仍在编辑它!【参考方案3】:

这是一个 for 循环。 for (int p : ps) 迭代 ps int 数组中的整数

【讨论】:

【参考方案4】:

该行正在遍历数组的每个索引,并在 p 变量的序列中取出其值。您可以通过以下方式检查

for (int p : ps)            // if ps is 1,2,3
   System.out.print(p+" ");  // it will print 1 2 3
   counts[p]++;

【讨论】:

以上是关于for(int i : x) 是做啥的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

glStencilMask() 到底是做啥的? [复制]

~> 运算符是做啥的? [复制]

这个 php 操作符是做啥的? [复制]

**在C语言中是做啥的? [复制]

这个条件运算符是做啥的? [复制]

Python 装饰器是做啥的,它的代码在哪里? [复制]