//声明一个集合,并插入一个值“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指令,按照此指令顺序执行。