http://blog.csdn.net/zhtzyh2012/article/details/46675065

循环提供特殊机会将变量作用域最小化.(无论传统for,还foreach).for循环,都允许声明循环变量,它们的作用域被限定在正好的作用范围之内.(范围包括循环体,以及循环体之前的初始化,测试,更新).如果循环终止之后不再需要循环变量内容,for循环优于while循环.
几乎每个局部变量的声明都应该包含一个初始化表达式.如果没有足够信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止.例外情况是与try..catch有关.
for循环比while循环另外优势:更简短,增加可读性.

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
Class<?>cl = null;
try{
cl= Class.forName(args[0]);
}catch (ClassNotFoundException e){
System.err.println("Classnot find");
System.exit(1);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package book.effectiveJava;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
* 将局部变量作用域最小化
* */
public class e_45MinimizeVariableScope {

public static void main(String[] args) {
List<String> t1=new ArrayList<>();
t1.add("1");
t1.add("2");
t1.add("3");

//str 的访问仅限于大括号内部
for(String str : t1){
System.out.println(str);
}

//这种方式比
for(Iterator<String> stringIterator = t1.iterator();stringIterator.hasNext();){
String str = stringIterator.next();
System.out.println(str);
}

Iterator<String> stringIterator=t1.iterator();
while(stringIterator.hasNext()){
System.out.println(stringIterator.next());
}

System.out.println("继续访问stringIterator:"+ stringIterator);


}
}