为什么在Java中有两种不同的for循环?

以法莲:

我有一个for循环,但不确定如何运行。我熟悉:

for(int i = 0; i <= 9; i++)
{
    /* implementation */
}

我对以下形式的for循环感到困惑:

String[] myString = new String[] {"one", "two", "three", "some other stuff"};

String str1 = "", str2 = "";  

for (String s :  myString)
{
    /* implementation */
}

这些类型的for循环如何工作?它们与常规for循环有何不同

MJB:

第一个是原始的for循环。您初始化变量,设置终止条件,并提供状态递增/递减计数器(有例外,但这是经典的)

为了那个原因,

for (int i=0;i<myString.length;i++) { 
  System.out.println(myString[i]); 
}

是正确的。

对于Java 5,提出了一种替代方法。任何实现可迭代的事物都可以得到支持。这在Collections中特别好。例如,您可以像这样迭代列表

List<String> list = ....load up with stuff

for (String string : list) {
  System.out.println(string);
}

代替

for (int i=0; i<list.size();i++) {
  System.out.println(list.get(i));
}

因此,这实际上只是一种替代表示法。任何实现Iterable的项(即可以返回迭代器)都可以用这种方式编写。

幕后发生的事情是这样的:(效率更高,但我正在明确地编写它)

Iterator<String> it = list.iterator();
while (it.hasNext()) {
  String string=it.next();
  System.out.println(string);
}

最后,它只是语法糖,但相当方便。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在C中有两种初始化指针的不同方法

为什么Elixir中有两种功能?

为什么Bootstrap在Sass中有两种字体?

为什么在Java中有两种使用线程的方式?

为什么矩形有两种不同的阴影

Java递归提供两种不同的结果。为什么?

为什么Python的线程模块中有两种具有相同功能的方法?

为什么在Elixir中有两种指示错误的方式?

为什么我们在C / C ++中有两种库?

为什么在scalaz-stream中有两种网络io的实现?

如果这两种Perl书写风格有什么区别,为什么结果不同?

为什么在Go中有两种声明变量的方法,有什么区别以及使用哪种方法?

为什么这两种向量加法方法有所不同?

为什么滚动条具有两种不同的行为?

为什么Python与R有两种不同的标准化结果

在Visual Studio中的链接库,为什么有两种不同的方式?

为什么32位和64位地址有两种不同的长度?

为什么两种多方法程序都有不同的结果

为什么这两种获取布尔值的方法会有不同的结果?

为什么这两种实现方式不同?

为什么a:hover显示两种不同的颜色?

为什么两种计算的结果不同?

为什么两种情况的输出不同?

启动服务的两种不同方式。为什么?

为什么Java Collections Framework提供两种不同的排序方式?

C中有两种不同的指针语法,哪一种是正确的,两者之间有什么区别?

为什么pytorch有两种非线性激活?

为什么片段之间有两种导航方式?

为什么Chrome有两种编码设置?