首页 > 解决方案 > 不理解方法返回的问题

问题描述

我编译并执行以下代码片段并打印

A collection coming up.
60

但我不明白为什么“即将推出一个系列”。打印一次

import java.util.ArrayList;
import java.util.Collection;

public class RQ400_100 {

    public static void main(String[] args) {
        int sum = 0;
        for (int i : makeCollection())
            sum += i;
        System.out.println(sum);
    }

    static Collection<Integer> makeCollection() {
        System.out.println("A collection coming up.");
        Collection<Integer> collection = new ArrayList<Integer>();
        collection.add(10); 
        collection.add(20); 
        collection.add(30);
        return collection;
    }
}

标签: java

解决方案


基本上代码是这样运行的:

firstmain被调用,它调用makeCollection(). 当makeCollection()被调用时,它会打印“即将推出的集合”,然后创建集合并返回它。然后我们回到 main 并遍历新创建的集合并计算其总和 (60)。然后主要打印'60'。

结果是makeCollection计算一次,主计算一次,打印的最终结果

A collection coming up.
60

推荐阅读