for中通过数组下标取得的对象是引用 可以重新指向新的对象 进行操作 同步改变数组中的对象
foreach是自动的复制对象 即使在循环中改变对象的引用 也只是修改的是复制之后的中间引用 并不能直接改变数组中的原数据
public class littleTest {
/**
* @param args
*/
public static void main(String[] args) {
test[] tC=new test[2];
tC[0]=new test(1);
tC[1]=new test(2);//1 2赋值给tC
for(int j=0;j<tC.length;j++)
{
tC[j] =new test(-1);//数组下标修改对象
}
for (test t : tC)
{
System.out.println(t.value);//输出修改后的对象
}
//for是直接下标的引用 可以修改内容
tC[0]=new test(1);
tC[1]=new test(2);
for (test t2 : tC)
{
// t2=new test(-2);//修改foreach自动复制的对象
}
for (test t3 : tC)
{
System.out.println(t3.value);//仍然打印出原数组的内容
}
//for是直接下标的引用 可以修改内容
tC[0]=new test(1);
tC[1]=new test(2);
for (test t2 : tC)
{
t2.value=-3;//直接修改 可修改未重新复制引用
}
for (test t3 : tC)
{
System.out.println(t3.value);//仍然打印出原数组的内容
}
}
}
class test
{
int value;
public test(){
value=-1;
}
public test(int f)
{
value=f;
}
}
结果
原因
for ( test t: tC) {
test = new test ();
}
相当于
for(){
test t=a[i];
t=new test ();
}
foreach中的对象实际是对数组对象的引用的引用,修改这个引用指向其他引用 则不会对数据产生影响 但是修改这个引用指向的对象的值 却是可以修改数组内容的
分享到:
相关推荐
For 和 Foreach 的效率问题,先猜一下,再运行一下,看猜的对不对。
for和forEach性能对比.md
Java 实例 - for 和 foreach循环使用源代码-详细教程.zip
"for、foreach、iterator的用法和区别" 在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合...
根据实际开发经验,介绍for与foreach的区别,正确使用for、foreach。解决开发时遇到“集合已修改 ; 可能无法执行枚举操作 ”的问题
下面小编就为大家带来一篇老生常谈foreach(增强for循环)和for的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇深入理解java中for和foreach循环。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
循环语句为众多程序员们提供了很大的便利,有while、do…while、for和 foreach。而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的。本文将详细给大家关于C#中foreach循环对比for循环的优势和...
for foreach测试代码 执行1000000万次字符串遍历操作。
PHP 数组 for foreach 循环 array_column函数.rar
JS中for,for...in,for...of和forEach的区别和用法实例 for循环 基本语法格式: for(初始化变量;条件表达式;操作表达式){ 循环体语句; } 普通for循环在Array和Object中都可以使用。for循环中可以使用...
foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。
在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。 集合已修改;可能无法执行枚举操作。 方法一:采用for循环,并且从尾到头遍历 如果...
PHP for和foreach循环 PHP do...while循环 PHP break/continue/exit PHP 数组 PHP 数字索引数组 PHP 非数字索引数组 PHP 多维数组 PHP 数组排序 PHP 多维数组排序 PHP 随机数组排序 PHP 文件内容载入数组 PHP 数组...
Parallel.ForEach读取经常卡死,大家可以参考代码如何解决。
foreach、while、for性能比较
低版本IE数组和HTMLCollection元素集合不兼容forEach循环遍历的处理方法 原生JavaScript通过name获取dom元素得到的是 HTMLCollection元素集合 要想循环遍历可以用forEach,但是在低于ie9的版本下不兼容 var list...
改进了linux tailq队列下在遍历时删除多个元素的问题。可以使用TAILQ_FOREACH_SAFE下面进行节点删除操作。不会出现野指针问题
本篇文章主要介绍了C#中的三种循环语句(while、for、foreach)的实现方式,需要的朋友可以参考下
foreach和array的应用(VB6.0代码编写) foreach和array的应用 QQ223857666勾月