public class TestDays {
public enum Days { MON,TUE,WEN};
public static void main(String [] args){
for(Days d:Days.values())
;
Days [] d2=Days.values();
System.out.println(d2[2]);
}}
中的for(Days d:Days.values())是什么意思?
最后结果为什么是WEN?
public enum Days { MON,TUE,WEN};
public static void main(String [] args){
for(Days d:Days.values())
;
Days [] d2=Days.values();
System.out.println(d2[2]);
}}
中的for(Days d:Days.values())是什么意思?
最后结果为什么是WEN?
jdk1.5后有的 d2[2] 数组索引从0开始的,所以2就是WEN
这是增强版的for循环
相当于:
Days [] d = Days.values();
for(int i=0;i<d.length;i++)
最后结果为什么是WEN?
public enum Days { MON,TUE,WEN};这不是很明显吗
什么也没做。但你要看得懂。
for(Days d : Days.values())表示要遍历Days中的每一个值
参考一下
反编译:
public enum Days { MON,TUE,WEN}
得到:
public final class Days extends Enum
{ public static Days[] values()
{
return (Days[])$VALUES.clone();
} public static Days valueOf(String s)
{
return (Days)Enum.valueOf(Days, s);
} private Days(String s, int i)
{
super(s, i);
} public static final Days MON;
public static final Days TUE;
public static final Days WEN;
private static final Days $VALUES[]; static
{
MON = new Days("MON", 0);
TUE = new Days("TUE", 1);
WEN = new Days("WEN", 2);
$VALUES = (new Days[] {
MON, TUE, WEN
});
}
}枚举类实际上就是一个final的class,它里面有一个private static final Days $VALUES[];这个数组包含了所有的成员,for(Days d:Days.values()) 就是在遍历这个数组。
相当于遍历数组,并把数组的值赋予变量Days d。因为数组Days的最后一个元素是WEN,所以d=WEN。
public enum Days {MON, TUE, WEN}; public static void main(String[] args) {
//这个 for循环是遍历Days,取出Days.values() 赋给d
for (Days d : Days.values()) {
System.out.println(d);
} for (int i = 0; i <= 2; i++ ){
Days[] d2 = Days.values();
System.out.println(d2[i]);
}
}
}
Days [] d2=Days.values();
System.out.println(d2[2]);
我在说一下吧
public enum Days { MON,TUE,WEN}; enum是枚举类型里面有三个值分别是MON,TUE,WEN
而你的代码中这句for(Days d:Days.values()) 里的Days.values()相当于把枚举类型的三个值取到一个
Days数组d中也就是Days [] d2 = Days.values();
剩下的语句就相当于for(int i=0;i <d2.length;i++) 做了一个for循环
至于最后结果为什么是WEN 是因为你写的输出System.out.println(d2[2]); d2[2]的意思就是d[]索引的2位置相当于第三个位置也就是WEN了
增强for循环的写法就是这样写的 如果你不知道的话 可以上网查查有很多的
最后结果为什么是WEN?
for的第二种写法,和for(int i=0;i<d.length;i++)是一样的。
最后的结果是WEN,因为数据的下标是从“0”开始的啊。
他的使用方法上面都说得很清楚了。不在啰嗦养成看帖回帖的习惯,嘿嘿。
JDK5.0以后的版本
for() 这个for功能不常用,它会把里面从头到尾都遍历出来。
如下
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}增强的For循环如下
for(int i:integers){
System.out.println(i);
}