`
nickdine
  • 浏览: 45692 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

for 和 foreach

阅读更多
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;
	}
}



结果 

    -1
    -1
    1
    2
    -3
    -3


原因
for ( test  t: tC) {
       test  = new test  ();
     }

     相当于

     for(){

     test  t=a[i];

     t=new test  ();

     }
foreach中的对象实际是对数组对象的引用的引用,修改这个引用指向其他引用 则不会对数据产生影响 但是修改这个引用指向的对象的值 却是可以修改数组内容的
分享到:
评论

相关推荐

    For 和 Foreach 的效率问题

    在编程语言中,`for`和`foreach`循环是两种常用的迭代工具,它们在处理集合或数组时发挥着重要作用。本文将深入探讨`for`和`foreach`在C#中的效率差异,以及如何根据具体场景选择合适的循环方式。 首先,`for`循环...

    for和forEach性能对比.md

    for和forEach性能对比.md

    for,foreach,iterator的用法和区别

    "for、foreach、iterator的用法和区别" 在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合...

    for和foreach的区别.txt

    根据实际开发经验,介绍for与foreach的区别,正确使用for、foreach。解决开发时遇到“集合已修改 ; 可能无法执行枚举操作 ”的问题

    Java 实例 - for 和 foreach循环使用源代码-详细教程.zip

    本教程将深入探讨两种常见的循环类型:`for`循环和`foreach`循环,它们在处理数组、集合和其他迭代场景时非常有用。 ### 1. `for`循环 `for`循环是最灵活的循环结构之一,适用于各种迭代需求。其基本语法如下: `...

    老生常谈foreach(增强for循环)和for的区别

    老生常谈foreach(增强for循环)和for的区别 在 Java 编程语言中,foreach 和 for 是两种常用的循环语句,都是用于遍历数组或集合的元素。然而,foreach 和 for 之间存在一些关键的区别,了解这些区别对于编写高效的...

    C#中foreach循环对比for循环的优势和劣势

    循环语句为众多程序员们提供了很大的便利,有while、do…while、for和 foreach。而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的。本文将详细给大家关于C#中foreach循环对比for循环的优势和...

    for foreach效率测试代码

    `for` 和 `foreach` 循环在C#中被广泛使用,它们各自有特定的用途和效率特点。本篇将深入探讨这两种循环结构,以及它们在执行大量遍历操作时的性能差异。 `for` 循环是一种灵活的循环结构,适用于需要知道循环次数...

    深入理解java中for和foreach循环

    在Java编程语言中,`for`循环和`foreach`(增强型for循环)是两种常见的迭代结构,用于遍历数组和集合。这篇文章将深入探讨这两种循环的使用方式、特点以及它们之间的区别。 首先,让我们来看一下传统的`for`循环。...

    C#中循环语句:while、for、foreach的使用

    本文将深入探讨C#中的三种主要循环语句:while、for和foreach,并通过实例来解释它们的使用方法。 首先,我们来看`while`循环。`while`循环是最基础的循环结构,它的执行依赖于一个布尔表达式。只要这个表达式为`...

    全面解析JavaScript里的循环方法之forEach,for-in,for-of

    在JavaScript中,有三种主要的循环方法:`forEach`、`for-in`和`for-of`,每种都有其特定的用途和特点。 `forEach`方法是ES5引入的一个数组方法,简化了对数组元素的遍历。例如: ```javascript myArray.forEach...

    详解Java中的增强 for 循环 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使用

    本篇文章详细介绍了C#并发实战记录之Parallel.ForEach使用的相关知识点,包括使用Parallel.ForEach优化循环计算、Parallel.ForEach的使用方法、变量自增问题的解决方法和Interlocked.Increment方法的使用。...

    浅谈php中的循环while、do…while、for、foreach四种循环

    本文将详细讲解PHP中的四种循环:while、do…while、for和foreach。 1. while循环 while循环是基于条件执行的循环。它会持续执行代码块,只要设定的条件为真。基本语法如下: ```php while(条件){ // 要循环执行的...

    PHP 数组 for foreach 循环 array_column函数.rar

    `for`和`foreach`循环是处理数组的两种主要方式,而`array_column`函数则是一个强大的工具,允许我们从多维数组中提取特定列的数据。 1. **for循环**:在PHP中,`for`循环通常用于迭代已知次数的情况。它的语法结构...

    05-for-vs-forEach.md

    本篇文档所提及的“for vs forEach”这一主题,表面上是关于两种常见的JavaScript数组遍历方法的性能对比,实则涉及到更深层次的知识点,包括JavaScript的运行机制、内存管理、以及编程风格和最佳实践。 首先,for...

    c#中Foreach详细用法

    在本文中,我们将详细介绍Foreach语句的用法和优点,并与传统的for循环语句进行比较。 一、Foreach语句的基本用法 -------------------------------- Foreach语句的基本语法结构为: ```csharp foreach (变量类型 ...

    Mybatis批量foreach merge into的用法

    Mybatis批量foreach merge into的用法可以批量插入时间价格表数据,但是需要注意其缺陷和限制。在实际应用中,需要根据实际情况选择合适的方法。 知识点总结: 1. Mybatis批量foreach merge into的用法可以批量...

    foreach和array的应用(VB6.0代码编写)

    三、结合使用Foreach和Array 当需要对数组进行操作,如计算平均值、查找特定值或执行其他复杂操作时,`Foreach`循环与数组的结合使用尤为有效。下面是一个计算数组所有元素之和的例子: ```vb Dim arrSummands(1 ...

Global site tag (gtag.js) - Google Analytics