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

java中foreach

    博客分类:
  • java
阅读更多
public class TestForEach {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Aeach[] a = new Aeach[2];

        //第一种赋值方式

        // for (int i = 0; i < a.length; i++) {
        //   a[i] = new Aeach();
        //  }

        //第二种赋值方式

        for (Aeach aeach : a) {
            aeach = new Aeach();
        }

        for (Aeach aeach : a) {

            //测试是否foreach会影响数组元素
            aeach.setName("1111111111111");
            System.out.println(aeach);
        }
        System.out.println(Arrays.toString(a));
    }

}

class Aeach {
    String name = "AAAAA初始化";

    public void setName(String name) {
        this.name = name;
    }

    public String toString() {
        return super.toString() + name;
    }
}
 

 

对上面的数组采用两种赋值方式,一个是foreach,一个是直接引用。看输入能看到采用foreach赋值打印的结果都为null,直接引用赋值能达到预期结果。

     主要是因为foreach赋值的时候

     for (Aeach aeach : a) {
       aeach = new Aeach();
     }

     相当于 

     for(){

     Aeach aeach=a[i];

     aeach=new Aeach();

     }

     这就相当于中间产生了一个副本,采用new操作符就等于没有操作数组的元素。

     我之前看到这个例子,还以为foreach操作不影响数组原来的元素呢。

     后面的代码,用直接引用的循环赋值方式,然后再用aeach.setName("1111111111111");
     再打印是发生了变化的。

     不是自己亲自试下还真忽略了,以后得小心对待这些问题,细细想来确实就是这么回事。new这个操作符新建个对象,明显不会影响数组元素,而采用引用的方式进行操作明显会改变了。。。

 

 

0
0
分享到:
评论

相关推荐

    Java中foreach使用过多会有性能问题?

    ”我当时一听纳闷了,以前的时候看到文章说JVM对foreach语法糖是有做优化的,在很多博客也是推荐使用foreach的,为什么突然会有这么个说法呢,躺床上看到个博客 Java 性能优化的五大技巧 的第五点钟第2条中说“避免...

    java 使用foreach遍历集合元素的实例

    在Java编程语言中,`foreach`循环是一种简洁的遍历集合元素的方式,它引入自Java 5(JDK 1.5)。`foreach`循环也被称为增强for循环,它的主要目的是简化对数组和集合的迭代操作。在本实例中,我们将深入探讨如何使用...

    使用foreach循环

    foreach 循环是 Java 语言中的一种特殊循环结构,从 JDK 1.5 之后引入,用于遍历数组和集合元素。它的出现简化了遍历数组和集合元素的过程,使代码更加简洁易读。 使用 foreach 循环遍历数组和集合元素的优点是,...

    详解Java中的增强 for 循环 foreach

    "Java 中的增强 for 循环 foreach" Java 中的增强 for 循环 foreach 是一种语法糖,它能够提高性能,并减少代码出错的几率。foreach 循环是用来对数组或者集合进行遍历的语法,具体语法如下:for(元素类型 ele : ...

    浅析java的foreach循环

    Java中的foreach循环,也被称为增强for循环,是自Java 5引入的一种新特性,它极大地简化了数组和集合的遍历操作。这个特性是基于Java的迭代器模式,但提供了更为简洁的语法,使得程序员无需直接处理索引或迭代器对象...

    java8lambda表达式Demo

    在这个“java8lambda表达式Demo”中,我们将探讨Lambda表达式在Android Studio工程中的实际应用。 Lambda表达式的核心概念是匿名函数,即没有名字的函数。在Java 8之前,如果需要定义一个简单的功能,如比较两个...

    ForEach_java(cusTag).txt

    根据提供的文件信息,本文将详细解释“ForEach_java(cusTag).txt”中涉及的关键知识点,主要包括自定义 JSP 标签库中的 `ForEach` 标签实现及其在 Java Web 应用程序中的应用。 ### 一、ForEach 标签概述 `ForEach...

    java程序中foreach用法示例

    Java中的foreach循环,也被称为增强型for循环,是Java 5引入的一项重要特性,它极大地简化了对数组和集合的迭代操作。以下是关于Java程序中foreach用法的详细解释: **1. foreach循环的基本语法** Java中的foreach...

    Mybatis批量foreach merge into的用法

    mapper配置实现中,需要设置parameterType为java.util.List,然后使用foreach循环插入数据。 需要注意的是,使用这种方法时,数据量不能太大,否则可能会出现性能问题。在测试中,发现20字段以内的表新增,数据2000...

    js的for in循环和java里foreach循环的区别分析

    主要介绍了js的for in循环和java里foreach循环的区别,实例分析了js的for in循环使用技巧并说明了与Java中foreach循环的使用区别,具有一定参考借鉴价值,需要的朋友可以参考下

    jstl标签 forEach详解

    jstl forEach 标签是 JavaServer Pages Standard Tag Library (JSTL) 中的一个标签,用于循环控制,可以将集合中的成员循序浏览一遍。该标签的运作方式为当条件符合时,就会持续重复执行的本体内容。 语法 --------...

    C-FOREACH用法

    `C-FOREACH`是JavaServer Pages (JSP)中JSTL (JavaServer Pages Standard Tag Library)的一部分,用于在页面上进行循环遍历。它提供了便利的方式来迭代数组、集合、Map或者其他迭代对象中的元素。在JSP开发中,`C-...

    Collection 集合的练习 foreach

    Collection 是所以集合的基类,该实例主要对Collection集合的成员函数的练习以及Iterator和foreach的遍历集合的练习,试用与java/C++ 新手。。

    13.foreach循环_java_

    在Java编程语言中,`foreach`循环,也称为增强型for循环或迭代器循环,是处理数组和集合数据的一种简洁高效的方式。这个小视频详细介绍了如何在Java中正确使用`foreach`循环,让我们深入探讨一下相关知识点。 首先...

    2021-2022计算机二级等级考试试题及答案No.3772.docx

    - **知识点**: Java中foreach循环的特点。 - **解析**: - A. foreach循环确实不需要获取容器的长度。 - B. 也不需要显式的迭代语句。 - C. 说法不正确,因为foreach循环简化了迭代过程,并不是繁琐的。 - D. ...

    java8 中文文档

    这使得可以在不破坏现有实现的情况下向接口添加新方法,如 `Collection` 接口中的 `forEach` 方法。 3. **日期与时间 API**: - Java 8 改进了日期和时间的处理,引入了 `java.time` 包,包含 `LocalDate`、`...

    java8中文文档API

    Java 8是Java编程语言的一个重要版本,引入了许多新特性,极大地提升了开发效率和...以上这些特性都在"java8中文文档API"中有所详细介绍,通过这个文档,开发者可以深入理解Java 8的新特性和使用方法,提升开发效率。

    Java中的迭代器和foreach原理

    Java中的迭代器(Iterator)和foreach循环是两种常用的遍历集合和数组的方式。迭代器模式是一种行为设计模式,它的核心作用在于允许用户遍历任何集合或聚合对象的元素,而无需暴露其底层结构。在Java中,迭代器主要...

Global site tag (gtag.js) - Google Analytics