在java中for ,while ,enhance for 有什么区别?

//声明一个集合,并插入一个值“1”
List<String> list = new ArrayList<>();
list.add("1");

for的用法:

for (int j = 0; j < list.size(); j++) {
    System.out.println(list.get(j));
}

执行顺序:

声明一个int类型的变量 j 并赋值为 0 , 判断 j 是否 小于 集合的大小,为true则执行中间代码块,最后执行 j ++ , 自增一,这样循环往复的执行,直到j < list.size() 为false,跳出循环。

while的用法:

int i = 0;
while (i < list.size()) {
    i++;
}

执行顺序:

声明一个int类型的变量 i 并赋值为 0 , 判断 j 是否 小于 集合的大小,为true则执行中间代码块,代码块中最后一行(一般情况)有 i ++ , 自增一,这样循环往复的执行,直到 j < list.size() 为false,跳出循环。

一般for多用于指定循环次数的情况,while则用于不知道要循环多少次。

增强for循环:

for (String str : list) {
    System.out.println(str);
}

因知道List的泛型,则直接将值赋予泛型变量,内部使用迭代器Iterator来执行,使用javap -c 将字节码反编译后,如下图:
在这里插入图片描述

不需要知道每个指令的含义看中间部分,后面有iterator就能看出是使用了List.iterator,通过Iterator.hasNext判断是否有下一个,Iterator.next获取下一个值,得到Object类型似乎是转成了String类型。基本了解了执行的机制和底层的指令执行顺序。

最后简单说一下javap指令,在配置好环境变量后,windows环境,cmd弹出终端,输入javap则显示先关参数和用法说明,主要是用于将javac编译后的class文件反编译成JVM指令,按照此指令顺序执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值