循环如何迭代?

时间:2014-03-12 16:10:16

标签: java

我有这个循环

 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如何增加?

6 个答案:

答案 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它用于集合和数组。当您想要遍历整个集合或数组时使用它。

请参阅The Java Tutorials

答案 5 :(得分:0)

bytes是一个数组,编译器知道这一点。它还知道它可以通过说bytes.length来获得数组的长度。因此,它会产生明显的循环,例如:

for (int i = 0; i < bytes.length; i++) {
  byte b = bytes[i];
}