以下Code 1&代码2?

时间:2016-10-17 09:35:20

标签: java

代码1

String ccMailAddresses="abc@co.in,xyz@co.in";
String ccMailAddressArray[]=ccMailAddresses.split(",");
for (int index = 0; index < ccMailAddressArray.length; index++) {
    System.out.println(ccMailAddressArray[index]);
}

代码2

String ccMailAddresses="abc@co.in,xy";
for (String ccMailAddress : ccMailAddresses.split(",")){
    System.out.println(ccMailAddress );
}

哪种是最佳做法?其中任何一个都有任何表现受到影响吗?

5 个答案:

答案 0 :(得分:1)

显然,第二段代码更短并处理更高级别抽象 - 因为它使用for-each循环;而不是那个count-for循环。

从这个意义上讲:code2需要较少的努力让读者掌握正在发生的事情。因此,从这个角度来看,它肯定是“更好”的。比code1。

表现方面,两者之间不应该有任何不同。

答案 1 :(得分:0)

代码几乎完全相同。 Code1中的if语句是无用的。在我看来,这总是如此。

区别在于这两行:

for (int index = 0; index < ccMailAddressArray.length; index++)

此处您的代码将被执行,直到您的索引大于数组的长度。

for (String ccMailAddress : ccMailAddresses.split(","))

此循环中的代码是针对数组中的每个元素执行的。

但请记住结果是一样的!

希望有所帮助!

答案 2 :(得分:0)

两个代码之间没有区别:

code1是传统的for循环,code2是为java集合引入的每个循环进行迭代。

答案 3 :(得分:0)

代码1

String ccMailAddresses="abc@co.in,xyz@co.in";
String ccMailAddressArray[]=ccMailAddresses.split(",");
if(ccMailAddressArray!=null){
    for (int index = 0; index < ccMailAddressArray.length; index++) {
        System.out.println(ccMailAddressArray[index]);
    }
}

在此示例中,您对ccMailAddressArray进行了不必要的检查,因为split()永远不会返回null。 for循环在此为您提供index。这有时是有用的,例如如果你有一个color数组,每个元素都有一个颜色存储。然后你可以使用color[index]选择每个元素的颜色并将其绘制到某个地方。现在请注意,这比仅迭代所有项目要复杂一些。因此,只要您需要 index

,就可以使用此版本

代码2

String ccMailAddresses="abc@co.in,xy";
for (String ccMailAddress : ccMailAddresses.split(",")){
    System.out.println(ccMailAddress );
}

在这个例子中,你做的基本相同。您在这里使用的for-each循环对您来说也是一样的。唯一的区别是你在这里没有index。它只是更短更简单,也更容易阅读。

所以:尽可能使用for-each(Code 2),因为了解你的内容会更简单一些。如果你使用基于索引的for循环(代码1),我假设你想一些index,这也意味着可能涉及一些更复杂的事情。

答案 4 :(得分:0)

感谢您回答stackoverflowgigs。

我的问题现在已经解决了!正如我的一位大四学生给我的评论关于代码2的评论是通过在每个循环中反复调用ccMailAddresses.split(",")来获得性能。