一下是两段java的for循环代码。我觉得结果应该是一样的,但是分别运行后发现,结果完全不同。
哪位朋友能告诉我,结果不同的原因是什么?LinkedList<String> list = new LinkedList<String>();
list.add("第一个");
list.add("第二个");
list.add("第三个");
list.add("第四个");
list.add("第五个");
list.add("第六个");
for(int j = 0; j < list.size(); j++){
String last = list.getLast();
System.out.println(last);
list.removeLast();
}
LinkedList<String> list = new LinkedList<String>();
list.add("第一个");
list.add("第二个");
list.add("第三个");
list.add("第四个");
list.add("第五个");
list.add("第六个");
for (int i = list.size() - 1; i >= 0; i--) {
String last = list.getLast();
System.out.println(last);
list.removeLast();
}
哪位朋友能告诉我,结果不同的原因是什么?LinkedList<String> list = new LinkedList<String>();
list.add("第一个");
list.add("第二个");
list.add("第三个");
list.add("第四个");
list.add("第五个");
list.add("第六个");
for(int j = 0; j < list.size(); j++){
String last = list.getLast();
System.out.println(last);
list.removeLast();
}
LinkedList<String> list = new LinkedList<String>();
list.add("第一个");
list.add("第二个");
list.add("第三个");
list.add("第四个");
list.add("第五个");
list.add("第六个");
for (int i = list.size() - 1; i >= 0; i--) {
String last = list.getLast();
System.out.println(last);
list.removeLast();
}
第一个for循环,你
第一次执行的时候
j=0 j<6 打印出: 第六个
第二次执行的时候
j=1 j<5 打印出: 第五个
第三次执行的时候
j=2 j<4 打印出: 第四个
第三次执行的时候
j=2 j<3 条件不满足了,推出for循环
第二个for循环是这样子的:
虽然每次都i-- 这个表达式,但是它有个表达式不停的给i赋值。
所以就变成这样:
i=5;i>=0 打印 :第六个
i=4;i>=0 打印 :第五个
i=3;i>=0 打印 :第四个
i=2;i>=0 打印 :第三个
i=1;i>=0 打印 :第二个
i=0;i>=0 打印 :第一个
第一个for循环,
第一次执行的时候
j=0 j<6 打印出: 第六个
第二次执行的时候
j=1 j<5 打印出: 第五个
第三次执行的时候
j=2 j<4 打印出: 第四个
第三次执行的时候
j=3 j<3 条件不满足了,推出for循环
第二个for循环是这样子的:
虽然每次都i-- 这个表达式,但是它有个表达式不停的给i赋值。
所以就变成这样:
i=5;i>=0 打印 :第六个
i=4;i>=0 打印 :第五个
i=3;i>=0 打印 :第四个
i=2;i>=0 打印 :第三个
i=1;i>=0 打印 :第二个
i=0;i>=0 打印 :第一个
int i = list.size() - 1 只执行一次
三楼未必对:红色部分就是错的
int i = list.size() - 1 只执行一次 没有出错的原因是他的条件是固定的i >= 0;21楼才说出了重点
不管在什么语言都要避免面在判断条件中用可变量
根本的不同在:
第一个循环条件是个可变量
j < list.size();
第二个循环条件是定值
i >= 0;
list.add("第一个");
list.add("第二个");
list.add("第三个");
list.add("第四个");
list.add("第五个");
list.add("第六个");
int i=list.size();
for(int j = 0; j < i; j++){
String last = list.getLast();
System.out.println(last);
list.removeLast();
}
第一个for循环,你
第一次执行的时候
j=0 j<6 打印出: 第六个
第二次执行的时候
j=1 j<5 打印出: 第五个
第三次执行的时候
j=2 j<4 打印出: 第四个
第三次执行的时候
j=2 j<3 条件不满足了,推出for循环
第二个for循环是这样子的:
虽然每次都i-- 这个表达式,但是它有个表达式不停的给i赋值。
所以就变成这样:
i=5;i>=0 打印 :第六个
i=4;i>=0 打印 :第五个
i=3;i>=0 打印 :第四个
i=2;i>=0 打印 :第三个
i=1;i>=0 打印 :第二个
i=0;i>=0 打印 :第一个