11

Java中的冒号是什么意思?我有这个:

public static List<String> findAllAnagrams(List<String> words) {
    List<String> result = new LinkedList<String>();
    for(String i : words){
        for (String j : words){
            if (result.contains(i)) {
                break;
            }
            else if (i == j) {

            } else {
                if (areAnagrams(i,j)){
                    result.add(i);
                    System.out.println(result);
                }
            }
        }
    }          
    return result;
}
4

5 回答 5

12

这意味着一件事,它是一个增强的 for 循环。

for (String i: words) 

意思是一样的

for (int i = 0; i < words.length; i++) {
    //
}

Joshua Bloch在其值得一读的《 Effective Java 》的第 46 条中说:

在 1.5 版中引入的 for-each 循环通过完全隐藏迭代器或索引变量来消除混乱和出错的机会。由此产生的习语同样适用于集合和数组:

迭代集合和数组的首选习惯用法

for (Element e : elements) {
    doSomething(e);
} 

当您看到冒号 (:) 时,将其读作“in”。因此,上面的循环读作“对于元素中的每个元素 e”。请注意,使用 for-each 循环没有性能损失,即使是数组也是如此。事实上,在某些情况下,它可能比普通的 for 循环提供轻微的性能优势,因为它只计算一次数组索引的限制。虽然您可以手动完成(第 45 条),但程序员并不总是这样做。

于 2013-01-17T08:20:40.427 回答
5
(String i : words)

对于每个项目words

: 将迭代器项和项指示为i

所以回答 - 它代表每个循环

于 2013-01-17T08:18:48.913 回答
2

每个循环中的冒号是语法的一部分,冒号也出现在标签上

于 2013-01-17T08:18:57.173 回答
0

它是 for-each 循环。当您看到冒号 (:) 时,将其读作“in” 您可以在 Oracle 文档中找到非常好的解释,其中包含示例,这里

于 2014-06-18T06:25:36.327 回答
0

不要认为冒号(:)有什么特别的含义。这正是 Java 设计人员在改进的 for 循环中考虑如何分隔参数表达式的方式。

for ( FormalParameter : Expression ) Statement

检查相同的语言规范:http: //docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2

于 2013-01-17T09:43:43.787 回答