以下程序給出的輸出:4 4 4 4 4在Java之前聲明清單循環
package HelloWorld;
import java.util.List;
import com.google.common.collect.Lists;
public class HelloWorld {
public static void main(String args[]) {
List<Product> productList = Lists.newArrayList();
**Product product = new Product();**
for (int i = 0; i < 5; i++) {
product.setId("id:" + i);
productList.add(product);
}
// Printing values
for (int i = 0; i < productList.size(); i++) {
System.out.println(productList.get(i).getId());
}
}
}
這是因爲產品在循環外部聲明。 但看到另一個方案:
package HelloWorld;
import java.util.List;
import com.google.common.collect.Lists;
public class HelloWorld {
public static void main(String args[]) {
**List<String> list = Lists.newArrayList();**
for(int i=0;i<5;i++){
list.add(""+i);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
這使輸出:0 1 2 3 4
可我知道爲什麼它打印0 1 2 3 4即使列表被宣告出局側的循環?我期望它來打印
「我希望它打印4 4 4 4 4」=> **爲什麼?**您將獨立於其他人的每個值添加到列表中。 – Seelenvirtuose
你爲什麼認爲它打印所有4個?您的預期輸出是完全錯誤的。 –
在第一個示例中,您將添加5次相同的產品,在第二個示例中,您將添加5個不同的字符串。 –