Java中数组和集合的foreach操作编译后究竟是啥
2024-10-01 07:53:25
今天和同事在关于foreach编译后是for循环还是迭代器有了不同意见,特做了个Demo,了解一下。
是啥自己来看吧!
public class Demo {
public static void main(String[] args) {
int[] ints = new int[5];
for (int s : ints) {
System.out.println(s);
}
String[] intss = new String[5];
for (String s : intss) {
System.out.println(s);
}
List<String> strings = new ArrayList<>();
for (String s : strings) {
System.out.println(s);
}
Map<String,String> map = new HashMap<>();
for (Map.Entry e: map.entrySet()) {
System.out.println(e.getKey());
}
}
}
编译后查看的源码:
public class Demo {
public Demo() {
}
public static void main(String[] args) {
int[] ints = new int[5];
int[] var2 = ints;
int var3 = ints.length;
int var4;
int s;
for(var4 = 0; var4 < var3; ++var4) {
s = var2[var4];
System.out.println(s);
}
String[] intss = new String[5];
String[] var8 = intss;
var4 = intss.length;
for(s = 0; s < var4; ++s) {
String s = var8[s];
System.out.println(s);
}
List<String> strings = new ArrayList();
Iterator var10 = strings.iterator();
while(var10.hasNext()) {
String s = (String)var10.next();
System.out.println(s);
}
Map<String, String> map = new HashMap();
Iterator var13 = map.entrySet().iterator();
while(var13.hasNext()) {
Entry e = (Entry)var13.next();
System.out.println(e.getKey());
}
}
}
总结:
foreach对于数组来说依旧是for循环,对List、Map集合来说是迭代器。
最新文章
- RabbitMQ基础知识
- 『.NET Core CLI工具文档』(九)dotnet-run
- 【只需3步】Linux php的安装与配置[源码安装]
- 辨析relative与absolute
- CentOS 访问Windows7共享文件夹
- android tools使用方式
- iScroll.js和Swiper.js联合使用时的插件冲突(滑动冲突)
- 菜鸟日记-HTML-表格与表单
- 洛谷P1202 [USACO1.1]黑色星期五Friday the Thirteenth
- getName()、getCanonicalName()、getSimpleName()异同
- wpf为ListBox添加渐变
- 网络安全实验室_上传关writeup
- vscode mysql v0.3插件 连接不了
- 51nod 1615 跳跃的杰克
- vue2.0模拟锚点
- CentOS6.5 下将 Python2.6.6 升级到Python3.5
- Darknet卷基层浅层特征可视化教程
- Linux命令-用户管理:useradd,userdel,usermod,id,su,env,exit
- Mindoc搭建流程
- 基本运算符与流程控制(Day5)