1、for循環和foreach循環的作用都可以遍歷一個list,比如
for(int i = 0; i < list.size; i ++) {
}
for(int i = list.size(); i > 0; i --) {
}
for (Class c : list) {
}
2、但是,下面的情況下for ++ 和for -- 不能通用(在循環的基數改變的時候,例如下面的例子,每循環兩次插入一個對象)
可以這樣
for (int i = t.size(); i > 0; i --) {
if(i % 2 == 0)
t.add(new Test());
}
但是,不可以這樣
for (int i = 0; i < t.size(); i ++) {
if(i % 2 == 0)
t.add(new Test());
}
這是因爲,在add的過程中,t.size()的值是在不斷改變的,所以這種基數改變的情況下只能用--
3、for 和 foreach的區別,時間複雜度的關係,foreach是在不斷的new 對象出來,比如下面的
package demo_20141031;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Test {
private String name = "";
// public String getName() {
// return name;
// }
public void setName(String name) {
this.name = name;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Test> t = new ArrayList<Test>();
Test temp = new Test();
String a = "12";
//String b = "1";
for (int i = 0; i < 10; i ++) {
temp.setName(a);
t.add(temp);
}
//System.out.println();
// long time0 = new Date().getTime();
// for (int i = 0; i < t.size(); i ++) {
//
// }
long time1 = new Date().getTime();
for (Test temps : t) {
}
long time2 = new Date().getTime();
// System.out.println(time1 - time0);
System.out.println(time2-time1);
}
}