广告
返回顶部
首页 > 资讯 > 精选 >Java中for与foreach的区别是什么
  • 178
分享到

Java中for与foreach的区别是什么

2023-06-30 12:06:28 178人浏览 泡泡鱼
摘要

本篇内容主要讲解“Java中for与foreach的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中for与foreach的区别是什么”吧!(1)遍历元素首先,我们一一段代码为

本篇内容主要讲解“Java中for与foreach的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中for与foreach的区别是什么”吧!

(1)遍历元素

首先,我们一一段代码为例:

        String[] array = {"1", "2", "3"};        for (String i : array) {            System.out.println(i);        }        ArrayList<String> list = new ArrayList<>();        list.add("111");        list.add("222");        list.add("333");        for (String i : list) {            System.out.println(i);        }

遍历后结果如下:

1
2
3
111
222
333

结果毫无疑问。
我们再来看看编译后的源码idea自带,在target包里打开你的类源码文件即可):

        String[] array = new String[]{"1", "2", "3"};        String[] var2 = array;        int var3 = array.length;        for(int var4 = 0; var4 < var3; ++var4) {            String i = var2[var4];            System.out.println(i);        }        ArrayList<String> list = new ArrayList();        list.add("111");        list.add("222");        list.add("333");        Iterator var7 = list.iterator();        while(var7.hasNext()) {            String i = (String)var7.next();            System.out.println(i);        }

可见,遍历数组使用的是原始for循环,集合的话使用的是Iterator迭代器。

(2)删除元素

哦的k!接下来我们来删除元素:
使用for循环:

        ArrayList<String> list = new ArrayList<>();        list.add("111");        list.add("222");        list.add("333");        log.info(list.toString());        for (int i = 0; i <list.size(); i++) {            list.remove("222");        }        log.info(list.toString());

结果:

11:52.532 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 222, 333]
11:11:52.539 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 333]

显然成功!
使用foreach:

        ArrayList<String> list = new ArrayList<>();        list.add("111");        list.add("222");        list.add("333");        log.info(list.toString());        for (String i : list) {          list.remove("222");        }        log.info(list.toString());

结果:

48.333 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 222, 333]
Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
    at java.util.ArrayList$Itr.next(ArrayList.java:859)
    at com.xiaolinge.com.hello.HelloWord.main(HelloWord.java:30)

显然木有成功!

原因:

迭代器内部的每次遍历都会记录List内部的modcount当做预期值,然后在每次循环中用预期值与List的成员变量modCount作比较,但是普通list.remove调用的是List的remove,这时modcount++,但是iterator内记录的预期值=并没有变化,所以会报错。
如果想要删除元素的话需要使用迭代器内部的remove方法:

        ArrayList<String> list = new ArrayList<>();        list.add("111");        list.add("222");        list.add("333");        log.info(list.toString());        Iterator<String> it = list.iterator();        while (it.hasNext()){            String next = it.next();            //if外使用list的remove方法还是会报错的            if(next.equals("222")){                it.remove();//这里使用的是迭代器里面的remove()方法,                // 当然如果使用list的remove方法在此删除质地感元素的话是成功的,比如:list.remove("222")            }        }        log.info(list.toString());

结果:

06:14.042 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 222, 333]
12:06:14.046 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 333]

(3)修改元素

使用原始for:

        ArrayList<String> list = new ArrayList<>();        list.add("111");        list.add("222");        list.add("333");        log.info(list.toString());        for (int i = 0; i <list.size(); i++) {            list.set(i,"444");        }         log.info(list.toString());

结果:

12:56.910 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 222, 333]
12:12:56.915 [main] INFO com.xiaolinge.com.hello.HelloWord - [444, 444, 444]

哦的k!可以修改元素;

使用foreach:

        ArrayList<String> list = new ArrayList<>();        list.add("111");        list.add("222");        list.add("333");        log.info(list.toString());       for (String i : list) {            i="444";        }         log.info(list.toString());

结果:

47.207 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 222, 333]
12:34:47.211 [main] INFO com.xiaolinge.com.hello.HelloWord - [111, 222, 333]

看到咯,不行的哦。
辣么,修改元素不行,修改元素的属性可不可以呢?让我们来看下吧。

(4)foreach修改元素属性

(for就不测试了)

创建一个学生类:

public class Student {        private int age;        public int getAge() {            return age;        }        public void setAge(int age) {            this.age = age;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        private String name;        public Student(){};        public Student(int age,String name){            this.age=age;            this.name=name;        }    }

哦的k,接下来测试代码:

    Student student=new Student(1,"huge");        Student student1=new Student(1,"xiaoyao");        List<Student> studentList=new ArrayList<Student>();        studentList.add(student);        studentList.add(student1);        System.out.println(student.getName());        System.out.println(student1.getName());        for(Student stu:studentList)        {            stu.setName("jingtian");        }        System.out.println(student.getName());        System.out.println(student1.getName());

结果:

huge
xiaoyao
jingtian
jingtian

484很神奇!修改不了对象,却可以修改对象的属性。

到此,相信大家对“Java中for与foreach的区别是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Java中for与foreach的区别是什么

本文链接: https://www.lsjlt.com/news/328606.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中for与foreach的区别是什么
    本篇内容主要讲解“Java中for与foreach的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中for与foreach的区别是什么”吧!(1)遍历元素首先,我们一一段代码为...
    99+
    2023-06-30
  • Java中for与foreach的区别
    目录(1)遍历元素(2)删除元素(3)修改元素(4)foreach修改元素属性总结之前有一个同事突然我问了我一个问题,说在foreach当中能不能删除list里面的元素,我当时大概说...
    99+
    2022-11-13
  • js中forEach怎么使用及forEach与for的区别是什么
    本篇内容介绍了“js中forEach怎么使用及forEach与for的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、定义和用法...
    99+
    2023-06-29
  • foreach和for循环的区别是什么
    本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。1、for循环 和 forEach的区别(1) for循环是通过 生成 数组的索引下标 循环遍历数组的每一个数据元素forEach是 JavaScr...
    99+
    2023-05-14
    javascript for 循环 foreach 前端开发
  • js中forEach的用法之forEach与for之间的区别
    目录一、定义和用法二、运用场景1.运用的场景(计算数字之和)2.运用的场景(给原始数组新增key值)三、forEach 跳出循环1.forEach 跳出当前的循环 return2.f...
    99+
    2022-11-13
  • java中list.forEach()和list.stream().forEach()的区别是什么
    这篇文章主要介绍了java中list.forEach()和list.stream().forEach()的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java中list.forEach()和list...
    99+
    2023-06-29
  • JavaScript中forEach() 和 map() 的区别是什么
    本篇文章为大家展示了JavaScript中forEach() 和 map() 的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.返回值forEach()...
    99+
    2022-10-19
  • es6中for和foreach的区别有哪些
    这篇文章主要介绍“es6中for和foreach的区别有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“es6中for和foreach的区别有哪些”文章能帮助大家解决问题。区别:1、forEach...
    99+
    2023-07-04
  • php中for和foreach的区别有哪些
    小编给大家分享一下php中for和foreach的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php有什么用php是一个嵌套的缩写名称,是英文超级文本...
    99+
    2023-06-14
  • JavaScript中的map()和forEach()的区别是什么
    这期内容当中小编将会给大家带来有关JavaScript中的map()和forEach()的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是map()和for...
    99+
    2022-10-19
  • Java中for(;;)和while(true)的区别是什么
    今天就跟大家聊聊有关Java中for(;;)和while(true)的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、问题来源在阅读Java的JDK源码时,发现大部分写源...
    99+
    2023-06-21
  • JS中for,for...in,for...of和forEach的区别和用法实例
    for循环 基本语法格式:  for(初始化变量;条件表达式;操作表达式){         &n...
    99+
    2022-11-12
  • Java中List.forEach()和List.stream().forEach()的区别
    少罗嗦,直接干! 在Java中,List是一种常用的集合类,用于存储一组元素。List提供了多种遍历元素的方式,包括使用forEach()方法和使用Stream流的forEach()方法。 List....
    99+
    2023-10-26
    java list windows
  • Java ArrayList遍历foreach与iterator时remove的区别
    目录一、Iterator和foreach的区别1.为啥说foreach底层就是Iterator二、foreach与iterator时remove的区别1.remove操作源码分析2....
    99+
    2022-11-13
  • Java语言中&&与& ||与|的区别是什么
    1、运算符两边的变量为boolean变量时       先列出代码:public class Test { public static void main(String[] args) {...
    99+
    2023-05-31
    java
  • java se与java的区别是什么
    Java是一门程序设计语言,它有三个版本,Java SE(标准版)、Java EE(企业版)和Java ME(微型版)。而Java SE只是一个使用Java进行编程的规范、框架,它不是一门编程语言。Java SE(java standard...
    99+
    2020-11-03
    java入门 java se java 区别
  • java ee与java的区别是什么
    JavaEE是指java enterprise edition,java企业版,多用于企业级开发,包括web开发等等很多组件。Java和JavaEE区别: Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越...
    99+
    2014-06-01
    java入门 java ee java 区别
  • html与java的区别是什么?
    html与java的区别两者本质不一样。Java是一种面向对象编程语言,像C、Basic一样,但各有各的特点。java是一门程序语言,具有众多优点,它是可以编写网页的;但那个语言叫JSP,JSP语言是JAVA程序语言的一种技术。【推荐学习:...
    99+
    2014-10-09
    java基础 html java
  • android与java的区别是什么
    java是一门编成语言,而android是一个基于linux内核的手机操作系统。两者的关系在于,用java语言可以编写出应用程序安装在android,这也是现在java语言就业的一个方向。编程界网,大量的免费Java入门教程,欢迎在线学习!...
    99+
    2018-02-25
    java教程 android java 区别
  • java与javascript的区别是什么
    这篇文章给大家分享的是有关java与javascript的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 区别:1、JavaScript由浏...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作