java中两个for循环的区别

红月8号 2014-12-19 09:35:22
java中一直在用for循环,但一直没弄清两个for循环的区别,今天看到个小列子,才恍然大悟
public class Test {
public static void main(String[] args) {
Random random=new Random(47);
String[] strArray=new String[random.nextInt(20)];
for(String s:strArray){
s="5555";
}
System.out.println("第一个for循环的结果是:"+Arrays.toString(strArray));
for(int n=0;n<strArray.length;n++){
strArray[n]="5555";
}
System.out.println("第二个for循环的结果是:"+Arrays.toString(strArray));
}
}
输出结果是:
第一个for循环的结果是:[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
第二个for循环的结果是:[5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555]
总结:
a> for(String s:strArray){...}这种for循环是直接取数组中的值,而不是取数组中的引用地址,通过引用地址在获取到值,输出集合中的东西时,效率应该较高,缺点是不能给集合赋值
b> for(int n=0;n<strArray.length;n++){...} ,输出集合中的内容时,效率较低,但可给集合赋值
...全文
384 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2014-12-19
  • 打赏
  • 举报
回复
引用 2 楼 humanity 的回复:
很简单的原因:

for(String s: array) {

}
,这个你都发现了,它定义了一个临时变量叫 s,这相当于: for(int p =0; p < array.length; p++) { String s = array[p]; } ,看到这个明白了原因了吧。 这个新语法只是”让我们少敲几次键盘“,没有任何创意。
LZ可以看看这个链接关于寻源那块的说明:http://www.iteye.com/news/29960 可能和我们想象的不太一样。。
hymwrj1 2014-12-19
  • 打赏
  • 举报
回复
引用 2 楼 humanity 的回复:
很简单的原因:

for(String s: array) {

}
,这个你都发现了,它定义了一个临时变量叫 s,这相当于: for(int p =0; p < array.length; p++) { String s = array[p]; } ,看到这个明白了原因了吧。 这个新语法只是”让我们少敲几次键盘“,没有任何创意。
学习了
huangzhijiao 2014-12-19
  • 打赏
  • 举报
回复
java小白路过,get新知识
humanity 2014-12-19
  • 打赏
  • 举报
回复
很简单的原因:

for(String s: array) {

}
,这个你都发现了,它定义了一个临时变量叫 s,这相当于: for(int p =0; p < array.length; p++) { String s = array[p]; } ,看到这个明白了原因了吧。 这个新语法只是”让我们少敲几次键盘“,没有任何创意。
qzw1210 2014-12-19
  • 打赏
  • 举报
回复
双重for循环可以看成数组,依次遍历每一个属性值。
多木多多木 2014-12-19
  • 打赏
  • 举报
回复
第一种循环的方式使用的是数组的遍历,遍历的时候并没有获取数组对象的引用,而只是获取了值,赋值的内容并没有保存到数组中。第二个循环相当于获取了数组对象的引用,然后赋值。
chiweitree 2014-12-19
  • 打赏
  • 举报
回复
第一个for循环是让你来读数据的,不是写数据的!!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧