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`在C#中的效率差异,以及如何根据具体场景选择合适的循环方式。 首先,`for`循环...
for和forEach性能对比.md
"for、foreach、iterator的用法和区别" 在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合...
根据实际开发经验,介绍for与foreach的区别,正确使用for、foreach。解决开发时遇到“集合已修改 ; 可能无法执行枚举操作 ”的问题
本教程将深入探讨两种常见的循环类型:`for`循环和`foreach`循环,它们在处理数组、集合和其他迭代场景时非常有用。 ### 1. `for`循环 `for`循环是最灵活的循环结构之一,适用于各种迭代需求。其基本语法如下: `...
老生常谈foreach(增强for循环)和for的区别 在 Java 编程语言中,foreach 和 for 是两种常用的循环语句,都是用于遍历数组或集合的元素。然而,foreach 和 for 之间存在一些关键的区别,了解这些区别对于编写高效的...
循环语句为众多程序员们提供了很大的便利,有while、do…while、for和 foreach。而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的。本文将详细给大家关于C#中foreach循环对比for循环的优势和...
`for` 和 `foreach` 循环在C#中被广泛使用,它们各自有特定的用途和效率特点。本篇将深入探讨这两种循环结构,以及它们在执行大量遍历操作时的性能差异。 `for` 循环是一种灵活的循环结构,适用于需要知道循环次数...
在Java编程语言中,`for`循环和`foreach`(增强型for循环)是两种常见的迭代结构,用于遍历数组和集合。这篇文章将深入探讨这两种循环的使用方式、特点以及它们之间的区别。 首先,让我们来看一下传统的`for`循环。...
本文将深入探讨C#中的三种主要循环语句:while、for和foreach,并通过实例来解释它们的使用方法。 首先,我们来看`while`循环。`while`循环是最基础的循环结构,它的执行依赖于一个布尔表达式。只要这个表达式为`...
在JavaScript中,有三种主要的循环方法:`forEach`、`for-in`和`for-of`,每种都有其特定的用途和特点。 `forEach`方法是ES5引入的一个数组方法,简化了对数组元素的遍历。例如: ```javascript myArray.forEach...
在 Java 中,foreach 循环可以用来遍历数组和集合,例如: ```java int [] array = {1,2,3}; for(int i : array){ System.out.println(i); } List list = new ArrayList(); list.add(1); list.add(2); list.add(3...
本篇文章详细介绍了C#并发实战记录之Parallel.ForEach使用的相关知识点,包括使用Parallel.ForEach优化循环计算、Parallel.ForEach的使用方法、变量自增问题的解决方法和Interlocked.Increment方法的使用。...
本文将详细讲解PHP中的四种循环:while、do…while、for和foreach。 1. while循环 while循环是基于条件执行的循环。它会持续执行代码块,只要设定的条件为真。基本语法如下: ```php while(条件){ // 要循环执行的...
`for`和`foreach`循环是处理数组的两种主要方式,而`array_column`函数则是一个强大的工具,允许我们从多维数组中提取特定列的数据。 1. **for循环**:在PHP中,`for`循环通常用于迭代已知次数的情况。它的语法结构...
本篇文档所提及的“for vs forEach”这一主题,表面上是关于两种常见的JavaScript数组遍历方法的性能对比,实则涉及到更深层次的知识点,包括JavaScript的运行机制、内存管理、以及编程风格和最佳实践。 首先,for...
在本文中,我们将详细介绍Foreach语句的用法和优点,并与传统的for循环语句进行比较。 一、Foreach语句的基本用法 -------------------------------- Foreach语句的基本语法结构为: ```csharp foreach (变量类型 ...
Mybatis批量foreach merge into的用法可以批量插入时间价格表数据,但是需要注意其缺陷和限制。在实际应用中,需要根据实际情况选择合适的方法。 知识点总结: 1. Mybatis批量foreach merge into的用法可以批量...
三、结合使用Foreach和Array 当需要对数组进行操作,如计算平均值、查找特定值或执行其他复杂操作时,`Foreach`循环与数组的结合使用尤为有效。下面是一个计算数组所有元素之和的例子: ```vb Dim arrSummands(1 ...