Java foreach循环是否可以修改数据的值问题解决方法

 更新时间:2024年02月07日 10:46:47   作者:BugMaker2002  
最近在做项目的时候,需要修改一个数组里面各个元素的值,foreach循环迭代数组元素时,不能改变数组元素的值,这篇文章给大家介绍Java foreach循环是否可以修改数据的值的问题及解决方法,感兴趣的朋友一起看看吧

一、问题引出

        最近在做项目的时候,需要修改一个数组里面各个元素的值,是这样的:在如图所示的程序

 当中,我本想是修改数组array当中各字符串的值(将其变成大写),采取的是foreach循环,然而我运行之后发现很奇怪:数组的内容并未发生改变 ,然后我采取了for循环再次尝试对数组元素进

 行修改:这次可以了!

 二、问题解决

        于是我上网查阅了相关的资料,看到一篇大佬发出的文章,我顿时茅塞顿开:

foreach循环迭代数组元素时,不能改变数组元素的值,因此,不要对foreach的循环变量进行赋值:基本类型数组,不可改变;但引用类型数组(除String类型),可以改变。

我顿时醒悟了!下面详细介绍:

1.基本类型数组

        foreach不可以改变变量,即使用集合存变量也不可以(foreach循环中,是把容器中的数据交给了那个element,当容器中装的是变量时,foreach是改变不了元数据的,想改变只能通过for循环)。如图可以看到,并没有什么用,无法改变:

2.引用类型数组

        ①String类型

        正如开篇所说,String类型是一个特例,无法被修改,只能通过for循环进行修改。

        ②其它引用类型

        foreach可以改变对象的值,对象和变量不一样,变量是独立的,但是如果把一个对象传给了另一个对象,他们就是一个对象,引用的地址是一样的,所以改变其中一个就改变了另一个。如图所示:可以看到foreach可以修改对象的类型。

        但foreach不能删除或添加对象(foreach循环中,是把容器中的数据交给了那个element,当容器中装的是对象时,对象的赋值(赋的是引用,即给的是原对象所在的地址)。为什么不能删除或者添加变量,因为每次进入foreach时,就会调用java.util.LinkedList.next()方法,该方法会对集合的长度进行判断,所以会出现异常,如图所示:

到此这篇关于Java foreach循环是否可以修改数据的值的文章就介绍到这了,更多相关Java foreach循环是否修改数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解使用Spring MVC统一异常处理实战

    详解使用Spring MVC统一异常处理实战

    本篇文章主要介绍了详解使用Spring MVC统一异常处理实战,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • SpringBoot中使用MyBatis-Plus实现分页接口的详细教程

    SpringBoot中使用MyBatis-Plus实现分页接口的详细教程

    MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,在SpringBoot项目中使用MyBatis-Plus可以大大简化分页逻辑的编写,本文将介绍如何在 SpringBoot项目中使用MyBatis-Plus实现分页接口
    2024-03-03
  • 使用mvn deploy命令上传jar包的实现

    使用mvn deploy命令上传jar包的实现

    本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • 深入了解java8的foreach循环

    深入了解java8的foreach循环

    虽然java8出来很久了,但是之前用的一直也不多,最近正好学习了java8。下面给大家分享java8中的foreach循环,感兴趣的朋友一起看看吧
    2017-05-05
  • java读取resources文件详解及实现代码

    java读取resources文件详解及实现代码

    这篇文章主要介绍了java读取resources文件详解及实现代码的相关资料,在开发项目的时候经常会遇到读取文件夹里面的内容,需要的朋友可以参考下
    2017-07-07
  • java.util.ArrayDeque类使用方法详解

    java.util.ArrayDeque类使用方法详解

    这篇文章主要介绍了java.util.ArrayDeque类使用方法,java.util.ArrayDeque类提供了可调整大小的阵列,并实现了Deque接口,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • java使用JSONObject实例

    java使用JSONObject实例

    JAVA中JSONObject对象的使用方法
    2013-11-11
  • Spring 应用上下文获取 Bean 的常用姿势实例总结

    Spring 应用上下文获取 Bean 的常用姿势实例总结

    这篇文章主要介绍了Spring 应用上下文获取 Bean,结合实例形式总结分析了Spring 应用上下文获取 Bean的实现方法与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • JAVA求两直线交点和三角形内外心的方法

    JAVA求两直线交点和三角形内外心的方法

    本文提供了JAVA求两直线交点、三角形外心、三角形内心的代码和算法讲解,大家可以参考使用
    2013-11-11
  • Java实现RSA加密工具类

    Java实现RSA加密工具类

    这篇文章主要介绍了Java如何实现RSA加密工具类,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-09-09

最新评论