我有这个循环
String str = "123";
byte[] bytes = str.getBytes();
for (byte b : bytes) { System.out.println(b);
}
//output: 49 50 11 (ASCII for 1 2 3)
我的问题是,b
如何增加?
答案 0 :(得分:3)
JLS保证此循环等效于
for (int n = 0; n < bytes.length; ++n){
byte b = bytes[n];
System.out.println(b);
}
即你可以保证遍历是从数组的开始到结束。正如您所看到的,foreach循环语法更清晰,但在这种情况下,牺牲了元素遍历的顺序。
答案 1 :(得分:0)
看看这里:
http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html
for-each循环遍历整个集合。
它是带有迭代器的for
循环的简短版本。
答案 2 :(得分:0)
这称为增强型for循环
它只是您想到的正常迭代循环的语法糖。
for(int i = 0; i < bytes.length; i++){
System.out.println( bytes[i] );
}
答案 3 :(得分:0)
这是一个foreach
- 循环。
b
是数组bytes
中的一个元素,循环将占用数组中的每个元素。
因此b不会增加。
答案 4 :(得分:0)
这被称为enhanced for-loop
它用于集合和数组。当您想要遍历整个集合或数组时使用它。
答案 5 :(得分:0)
bytes
是一个数组,编译器知道这一点。它还知道它可以通过说bytes.length
来获得数组的长度。因此,它会产生明显的循环,例如:
for (int i = 0; i < bytes.length; i++) {
byte b = bytes[i];
}