Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么for-each循环适用于数组?(Java)

为什么for-each循环适用于数组?(Java)
EN

Stack Overflow用户
提问于 2020-06-16 05:18:12
回答 2查看 228关注 0票数 3

我不明白在Java中for each循环是如何迭代数组的。我的理解是for each循环可以遍历任何实现Iterable接口的类,但是Java中的数组并不实现Iterable,那么怎么可能在它们上使用for each循环呢?

EN

回答 2

Stack Overflow用户

发布于 2020-06-16 05:27:14

如果for (:)习惯用法的右侧是array而不是Iterable对象,则内部代码使用int索引计数器并检查array.length。这就是为什么它可以用来遍历数组。有关更多详细信息,请参阅Java Language Specification

这个答案的一部分是不受here约束的。你也可以看看这个问题。

我想补充的是,如果你愿意,你可以很容易地将java array转换成Iterable

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Integer arr[] = { 1, 2, 3, 4, 5};

List<Integer> list = Arrays.asList(arr);
// or
Iterable<Integer> iterable = Arrays.asList(arr);
票数 4
EN

Stack Overflow用户

发布于 2020-06-16 05:46:56

根据JLS

增强的for语句具有以下形式:

表达式: for ( {VariableModifier} UnannType VariableDeclaratorId :EnhancedForStatement)语句

表达式: for ( {VariableModifier} UnannType VariableDeclaratorId :VariableDeclaratorId) StatementNoShortIf

Java foreach循环或增强的for语句被转换为基本的for语句,如下所示:

  1. 如果对于某个类型参数X,Expression的类型是Iterable<X>的子类型,则让Ijava.util.Iterator<X>;类型,否则,让I为原始类型I

增强的for语句等同于以下形式的基本for语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (I #i = Expression.iterator(); #i.hasNext(); ) {
    {VariableModifier} TargetType Identifier =
        (TargetType) #i.next();
    Statement
}

否则,T[].必须具有数组类型

增强的for语句等同于以下形式的基本for语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
T[] #a = Expression;
L1: L2: ... Lm:
for (int #i = 0; #i < #a.length; #i++) {
    {VariableModifier} TargetType Identifier = #a[#i];
    Statement
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62401388

复制
相关文章
对于Java循环中的For和For-each,哪个更快
Java遍历集合有两种方法。一个是最基本的for循环,另一个是jdk5引入的for each。通过这种方法,我们可以更方便地遍历数组和集合。但是你有没有想过这两种方法?哪一个遍历集合更有效?
愷龍
2022/08/25
1.1K0
对于Java循环中的For和For-each,哪个更快
Java数组循环_java遍历object数组
三维数组:int[][][]arr = { { {1,2},{3,4,5},{6}},{ {7,8},{9}},{ {10,11},{12,13}}}
全栈程序员站长
2022/11/04
2.7K0
java中遍历数组_java循环取数组值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/02
2.8K0
循环数组
array ( 'product_id' => array ( 0 => '1', 1 => '16', ), 'product_price_id' => array ( 0 => '2', 1 => '', ), 'qty' => array ( 0 => '1', 1 => '1', ), )
botkenni
2022/01/10
1.3K0
java中打印数组的方法_Java数组方法–如何在Java中打印数组
An array is a data structure used to store data of the same type. Arrays store their elements in contiguous memory locations.
全栈程序员站长
2022/09/05
4.7K0
多线程循环打印数组 -- Java笔记
1.使用 import java.util.concurrent.locks.LockSupport;
WeiMLing
2020/10/10
8090
多线程循环打印数组 -- Java笔记
Java基础:数组的声明,循环,赋值,拷贝。
下面,语句就是声明了一个可以存储100个整数的数组。可以根据你的实际需求,更换int类型为你需要的数据类型。
呆呆
2021/10/04
1.1K0
数组常用循环
对于JS我们常见的循环有下面这些: for 循环 for in 循环 for of 循环 forEach() map() filter() some() every() 下面要循环的数组 var arr = ['a', 'b', 'c']; 1、for 循环 for (var i = 0; i < arr.length; i++) { console.log(arr[i]) } 2、for in 循环 for (var i in arr) { cons
用户6973020
2020/02/24
1.4K0
数组循环左移
/* 功能:数组循环左移 日期:2013-05-20 */ #include <stdio.h> #include <stdlib.h> #include <math.h> #define LEN 6
WindCoder
2018/09/19
1.6K0
for-each实现方法
Java遍历集合有两种方法。一个是最基本的for循环,另一个是jdk5引入的for each。通过这种方法,我们可以更方便地遍历数组和集合。但是你有没有想过这两种方法?哪一个遍历集合更有效?
愷龍
2022/09/26
1.4K0
for-each实现方法
一维数组元素的循环右移(java实现)
设以一个算法,实现将一维数组中的元素循环右移k位,要求只用一个元素大小的辅助空间。
别团等shy哥发育
2023/02/27
5070
一维数组元素的循环右移(java实现)
为什么说写 Java 的人 for循环得用好?
注意,是四种写法,并不是说底层的四种实现方式,这四种写法各有千秋,但是也是最常用的几种
代码宇宙
2023/02/16
6700
循环队列出队-数组循环队列
  我们知道队列这种数据结构的物理实现方式主要还是两种,一种是链队列(自定义节点类),另一种则是使用数组实现,两者各有优势。此处我们将要介绍的循环队列其实是队列的一种具体实现,由于一般的数组实现的队列结构在频繁出队的情况下,会产生假溢出现象循环队列出队,导致数组使用效率降低,所以引入循环队列这种结构。本文将从以下两个大角度介绍循环队列这种数据结构:
宜轩
2022/12/29
1.1K0
java基础(九):容器
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
Vincent-yuan
2020/06/16
8380
Java编程的一些小技巧-----基础语法篇(1)
今天在github上面看到了一个很好的项目,是在Stack Overflow上面点赞数top100的关于Java的回答,看了一些,感觉十分实用,对于新手来说,能加深对Java的认识,同时也能让代码更简洁。所以想写下这系列的博文,每个回答我都会亲自用代码检验一下,下面一起来看看这些小技巧吧,绝不会让你失望。
秃头哥编程
2019/06/04
5510
Java编程的一些小技巧-----基础语法篇(1)
安装适用于 Java 的 TensorFlow安装适用于 Java 的 TensorFlow
TensorFlow 可提供在 Java 程序中使用的 API。这些 API 特别适合用于加载以 Python 语言创建的模型并在 Java 应用中运行这些模型。本指南将介绍如何安装适用于 Java 的 TensorFlow 并在 Java 应用中使用 TensorFlow。
一个会写诗的程序员
2018/08/17
1.2K0
matlab 循环矩阵_matlab循环输出数组
clc;clearall;closeall;t0=[11];a=[12;34]t=t0;t(1,:)=t0’\an=10;fori=2:nt(i,:)=t(i-1,:)’\a;endt
全栈程序员站长
2022/11/08
3.3K0
环形数组循环
给定一个含有正整数和负整数的环形数组nums,如果某个索引中的数k为正数,则向前移动 k个索引,相反如果是负数-k,则向后移动k个索引。因为数组是环形的,所以可以假设最后一个元素的下一个元素是第一个元素,而第一个元素的前一个元素是最后一个元素,确定nums中是否存在循环或周期。循环必须在相同的索引处开始和结束并且循环长度>1。此外,一个循环中的所有运动都必须沿着同一方向进行,换句话说,一个循环中不能同时包括向前的运动和向后的运动。
WindRunnerMax
2020/08/27
1.4K0
JavaScript For循环与数组
for 是 JavaScript 提供的另一种循环控制的话句,它和 while 只是语法上存在差异。
用户9615083
2023/10/18
1760
JavaScript For循环与数组
点击加载更多

相似问题

Java: for-each循环中的“匿名”数组

40

为什么我不能用For-Each循环赋值?Java

20

如何用Java的for-each循环填充数组?

31

Java: For-Each循环和引用

70

Java For-Each循环:排序顺序

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文