增强型的for循环 优点主要体现在集合中,随便举个例子
比如对 set 的遍历
一般是迭代遍历:
Set<String>set = new HashSet<String>()
Iterator<String>it = set.iterator()
while (it.hasNext()) {
String str = it.next()
System.out.println(str)
}
for循环遍历:
for (String str : set) {
System.out.println(str)
}
是不是简单些?
优点还体现在泛型 假如 set中存放的是Object
Set<Object>set = new HashSet<Object>()
for循环遍历:
for (Object obj: set) {
if(obj instanceof Integer){
int aa= (Integer)obj
}else if(obj instanceof String){
String aa = (String)obj
}
........
}
唯一的缺点就是 在遍历 集合过程中,不能对集合本身进行操作
for (String str : set) {
set.remove(str)//错误!
}
//按照你思路很明显无法得到99的,for内的i=99时,且将要结束FOR循环时i还要++所以结果会是100.参考ForTest1//i的作用域只在for的话,只能把它赋值给另一个变量作用域超出FOR的才可以.参考ForTest2
public class ForTest1 {
int getFor() {
int i
for (i = 0i <100i++) {
}
return i
}
public static void main(String[] args) {
ForTest1 t = new ForTest1()
System.out.println(t.getFor())
}
}
public class ForTest2 {
static int n
void setFor() {
for (int i = 0i <100i++) {
n = i
}
}
int getFor(){
return n
}
public static void main(String[] args) {
ForTest2 t = new ForTest2()
t.setFor()
System.out.println(t.getFor())
}
}
一般是通过迭代期获取数据,因为set集合无序,所以输出不是顺序输出
import java.util.HashSetimport java.util.Iterator
import java.util.Set
public class Test{
public static void main(String[] args) {
// 初始化set集合
Set<String> set = new HashSet<>()
set.add("1")
set.add("2")
set.add("3")
// 获取set集合数据
for (Iterator iterator = set.iterator() iterator.hasNext()) {
String string = (String) iterator.next()
System.out.println(string)
}
}
}