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这个操作符新建个对象,明显不会影响数组元素,而采用引用的方式进行操作明显会改变了。。。
分享到:
相关推荐
”我当时一听纳闷了,以前的时候看到文章说JVM对foreach语法糖是有做优化的,在很多博客也是推荐使用foreach的,为什么突然会有这么个说法呢,躺床上看到个博客 Java 性能优化的五大技巧 的第五点钟第2条中说“避免...
在Java编程语言中,`foreach`循环是一种简洁的遍历集合元素的方式,它引入自Java 5(JDK 1.5)。`foreach`循环也被称为增强for循环,它的主要目的是简化对数组和集合的迭代操作。在本实例中,我们将深入探讨如何使用...
foreach 循环是 Java 语言中的一种特殊循环结构,从 JDK 1.5 之后引入,用于遍历数组和集合元素。它的出现简化了遍历数组和集合元素的过程,使代码更加简洁易读。 使用 foreach 循环遍历数组和集合元素的优点是,...
"Java 中的增强 for 循环 foreach" Java 中的增强 for 循环 foreach 是一种语法糖,它能够提高性能,并减少代码出错的几率。foreach 循环是用来对数组或者集合进行遍历的语法,具体语法如下:for(元素类型 ele : ...
Java中的foreach循环,也被称为增强for循环,是自Java 5引入的一种新特性,它极大地简化了数组和集合的遍历操作。这个特性是基于Java的迭代器模式,但提供了更为简洁的语法,使得程序员无需直接处理索引或迭代器对象...
在这个“java8lambda表达式Demo”中,我们将探讨Lambda表达式在Android Studio工程中的实际应用。 Lambda表达式的核心概念是匿名函数,即没有名字的函数。在Java 8之前,如果需要定义一个简单的功能,如比较两个...
根据提供的文件信息,本文将详细解释“ForEach_java(cusTag).txt”中涉及的关键知识点,主要包括自定义 JSP 标签库中的 `ForEach` 标签实现及其在 Java Web 应用程序中的应用。 ### 一、ForEach 标签概述 `ForEach...
Java中的foreach循环,也被称为增强型for循环,是Java 5引入的一项重要特性,它极大地简化了对数组和集合的迭代操作。以下是关于Java程序中foreach用法的详细解释: **1. foreach循环的基本语法** Java中的foreach...
mapper配置实现中,需要设置parameterType为java.util.List,然后使用foreach循环插入数据。 需要注意的是,使用这种方法时,数据量不能太大,否则可能会出现性能问题。在测试中,发现20字段以内的表新增,数据2000...
主要介绍了js的for in循环和java里foreach循环的区别,实例分析了js的for in循环使用技巧并说明了与Java中foreach循环的使用区别,具有一定参考借鉴价值,需要的朋友可以参考下
jstl forEach 标签是 JavaServer Pages Standard Tag Library (JSTL) 中的一个标签,用于循环控制,可以将集合中的成员循序浏览一遍。该标签的运作方式为当条件符合时,就会持续重复执行的本体内容。 语法 --------...
`C-FOREACH`是JavaServer Pages (JSP)中JSTL (JavaServer Pages Standard Tag Library)的一部分,用于在页面上进行循环遍历。它提供了便利的方式来迭代数组、集合、Map或者其他迭代对象中的元素。在JSP开发中,`C-...
Collection 是所以集合的基类,该实例主要对Collection集合的成员函数的练习以及Iterator和foreach的遍历集合的练习,试用与java/C++ 新手。。
在Java编程语言中,`foreach`循环,也称为增强型for循环或迭代器循环,是处理数组和集合数据的一种简洁高效的方式。这个小视频详细介绍了如何在Java中正确使用`foreach`循环,让我们深入探讨一下相关知识点。 首先...
- **知识点**: Java中foreach循环的特点。 - **解析**: - A. foreach循环确实不需要获取容器的长度。 - B. 也不需要显式的迭代语句。 - C. 说法不正确,因为foreach循环简化了迭代过程,并不是繁琐的。 - D. ...
这使得可以在不破坏现有实现的情况下向接口添加新方法,如 `Collection` 接口中的 `forEach` 方法。 3. **日期与时间 API**: - Java 8 改进了日期和时间的处理,引入了 `java.time` 包,包含 `LocalDate`、`...
Java 8是Java编程语言的一个重要版本,引入了许多新特性,极大地提升了开发效率和...以上这些特性都在"java8中文文档API"中有所详细介绍,通过这个文档,开发者可以深入理解Java 8的新特性和使用方法,提升开发效率。
Java中的迭代器(Iterator)和foreach循环是两种常用的遍历集合和数组的方式。迭代器模式是一种行为设计模式,它的核心作用在于允许用户遍历任何集合或聚合对象的元素,而无需暴露其底层结构。在Java中,迭代器主要...