java中for循环执行的顺序图文详析
for循环基础
for循环是最灵活也是最常用的循环结构,表达式一般如下:
for(条件表达式1;条件表达式2;条件表达式3){
语句块;
}
接下来详细介绍Java for循环执行顺序的相关内容,先看看一道面试题,
来自小米笔试
static boolean foo(charc) { System.out.print(c); return true; } public static void main(String[] args) { int i =0; for(foo('B');foo('A')&&(i<2);foo('C')) { i++; foo('D'); } }
上述代码Java函数的执行结果是什么()
A. BADCBDCB
B. BADCADCA
C. BACDBACD
D.不确定
输入IDEA的结果如下:
当然根据结果可以直接选择 --------B
但是也得搞清楚缘由;
以下贴上个人理解
分析理解
平时看到的for循环都是以下的样子:
for (int j = 0; j <10 ; j++) { System.out.println(j); }
根据这个代码结合上面题目的代码,来分析一下for循环到底是怎么操作的
首先打个断点进行测试
此时毫无疑问 j=0;
这就代表for循环先执行的是int j=0;这个条件
接下来继续
由于当前的代码并不能确定是否先执行的是 j<10还是j++;
因此通过题目中的代码进行分析
可以发现在执行完B的打印后,代码开始执行A的打印,也就是说
for循环先执行赋值语句,再执行判断条件,
程序继续走:
开始执行for循环中的代码了,
在往下走
此时开始打印C,
由此总结出for循环的执行顺序:
总结
到此这篇关于java中for循环执行顺序的文章就介绍到这了,更多相关java for循环执行顺序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
详细总结Java for循环的那些坑
一.循环语句的几种语法 语法: for循环格式: for(初始化语句:条件判断:递进语句){ 循环体: } while循环格式: 初始化语句: while(条件判断){ 循环体: 递进语句: } do-while循环格式: 初始化语句: do{ 循环体: 递进语句: }while(条件判断): 实例: package org.pdool.wrongfor; import java.util.ArrayList; import java.util.List; /** * 循环的格式 * @auth
-
细数java for循环中的那些坑
目录 1.循环语句的几种语法 2.循环中需要注意的点 2.1 循环如果满足了查找的需求 break 直接跳出,不要浪费性能 2.2 循环集合的时候能用for each 的尽量用for each 2.3 不要写空的死循环 2.4 不要在循环中new对象 2.5 可以在循环外做的,不要放到循环内 2.6 循环的建议 3.循环中的坑 3.1 byte导致死循环 3.2 在循环中反向操作索引导致死循环 3.3 在操作集合的时候不要在循环里进行元素的 remove/add 操作 3.4 不要再循环内多次访
-
关于Java中增强for循环使用的注意事项
序言 for循环语句是java循环语句中最常用的循环语句,一般用在循环次数已知的情况下使用.for循环语句的语法格式如下: java语言 for语句的用法 for(初始化表达式;循环条件;操作表达式){ 执行语句 -- } 开发过程中,使用for循环遍历集合或数组是司空见惯的一件事,大家也习惯这样操作,但是有时候为了简便,我们可能会使用增强for循环,也就是类似for(String s : strList )写法,但是有时候稍有不慎,可能会带来一些莫名奇妙
-
java迭代器和for循环优劣详解
在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因.目前有三种迭代方法:for循环.迭代器和Foreach.前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一起比较.下面我们就三种方法的概念进行理解,然后ArrayList中探索三种方法的效率. 1.概念理解 for循环:是支持迭代的一种通用结构,是最有效,最灵活的循环结构 迭代器:是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的 Foreach:通过阅读源码我们还发现一个It
-
JAVA Iterator接口与增强for循环的实现
1 Iterator迭代器 1.1 Iterator接口 java.util.Iterator接口也是Java集合中的一员: Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器. public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素. 迭代:Collection集合元素的通用获取方式.在取元素之前先判断集合中有没有元素.如果有,就把这个元素取出来:继续判断,如果还有就再取出来:就这样一直把集
-
java中for循环执行的顺序图文详析
for循环基础 for循环是最灵活也是最常用的循环结构,表达式一般如下: for(条件表达式1:条件表达式2:条件表达式3){ 语句块: } 接下来详细介绍Java for循环执行顺序的相关内容,先看看一道面试题, 来自小米笔试 static boolean foo(charc) { System.out.print(c); return true; } public static void main(String[] args) { int i =0; for(foo('B');foo('A'
-
Java中for循环的执行过程分析
本文实例分析了Java中for循环的执行过程.分享给大家供大家参考.具体分析如下: public class Test01{ public static void main(String[] args) { int i = 0 ; for(foo('A');foo('B')&&i<3;foo('C')){ i++ ; foo('D') ; } } public static boolean foo(char c){ System.out.print(c + " "
-
Java中的循环笔记整理(必看篇)
一.循环的类型: 1.for循环 class For{ public static void main(String[] args) { System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); Sy
-
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
俗话说的好,好记性不如个烂笔头,这么多技术文章如果不去吃透,技术点很快就容易忘掉,下面是小编平时浏览的技术文章,整理的笔记,分享给大家. 开发过程中我们都希望使用别人成熟的框架,因为站在巨人的肩膀上会使得我们开发的效率大幅度提升.不过,我们也应该.必须了解其基本原理.比如DOM事件,jquery框架帮我们为我们封装和抽象了各浏览器的差异行为,为事件处理带来了极大的便利.不过浏览器逐步走向统一和标准化,我们可以更加安全地使用官方规范的接口.因为只有获得众多开发者的芳心,浏览器才会走得更远.正如我们
-
实例解析JAVA中代码的加载顺序
Java中代码的加载顺序所能了解的知识点 类的依赖关系 static代码块的加载时间 继承类中构造器的隐式调用 非static的成员变量初始化时间 main方法和static的加载顺序 测试代码如下: public class App { private static App d = new App(); private SubClass t = new SubClass(); static{ System.out.println("App static");//6 } public
-
Java中CyclicBarrier 循环屏障
目录 一.简介 二.CyclicBarrier的使用 CyclicBarrier 应用场景 模拟合并计算场景 模拟“人满发车”的场景 三.CyclicBarrier 源码分析 CyclicBarrier 流程 几个常见的问题? CyclicBarrier 与 CountDownLatch的区别 一.简介 CyclicBarrier 字面意思回环栅栏(循环屏障),它可以实现让一组线程等待至某个状态(屏障点)之后再全部同时执行.叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以
-
分析java 中AspectJ切面执行两次的原因
分析java 中AspectJ切面执行两次的原因 背景 转眼之间,发现博客已经将近半年没更新了,甚是惭愧.话不多说,正如标题所言,最近在使用AspectJ的时候,发现拦截器(AOP切面)执行了两次了.我们知道,AspectJ是AOP的一种解决方案,本质上是通过代理类在目标方法执行通知(Advice),然后由代理类再去调用目标方法.所以,从这点讲,拦截器应该只会执行一次.但是在测试的时候发现拦截器执行了两次. 问题重现 既然问题已经明了,那么可以通过代码简单重现这个问题,从而更深层次分析到底是什么
-
Java中Map循环遍历的五种方法实现
目录 1.创建一个Enum 2.开始遍历 方法一 方法二 方法三 方法四 方法五 因为Map比较常用,所以今天来总结下Map取值比较常用的几种遍历方法. 1.创建一个Enum public enum FactoryStatus { BAD(0,"ou"), GOOD(1,"yeah"); private int status; private String description; FactoryStatus(int stat
-
Spring中循环依赖的解决方法详析
前言 说起Spring中循环依赖的解决办法,相信很多园友们都或多或少的知道一些,但当真的要详细说明的时候,可能又没法一下将它讲清楚.本文就试着尽自己所能,对此做出一个较详细的解读.另,需注意一点,下文中会出现类的实例化跟类的初始化两个短语,为怕园友迷惑,事先声明一下,本文的实例化是指刚执行完构造器将一个对象new出来,但还未填充属性值的状态,而初始化是指完成了属性的依赖注入. 一.先说说Spring解决的循环依赖是什么 Java中的循环依赖分两种,一种是构造器的循环依赖,另一种是属性的循环依赖.
-
Java中volatile关键字的作用与用法详解
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以重获生机. volatile 关键字作用是,使系统中所有线程对该关键字修饰的变量共享可见,可以禁止线程的工作内存对volatile修饰的变量进行缓存. volatile 2个使用场景: 1.可见性:Java提供了volatile关键字来保证可见性. 当一个共享变量被volatile修饰时,它会保证修
随机推荐
- Javascript中数组去重与拍平的方法示例
- firefox推荐与个人理解的css书写顺序
- SQL Server 2008怎样添加自增列实现自增序号
- jQuery操作Table技巧大汇总
- vue实现图书管理demo详解
- 详解常用查找数据结构及算法(Python实现)
- 对象失去焦点时自己动提交数据的实现代码
- ASP里面令人震撼地Debug类(VBScript)
- Android获取view高度的三种方式
- appendChild() 或 insertBefore()使用与区别介绍
- CentOS Linux更改MySQL数据库目录位置具体操作
- 高性能WEB开发 为什么要减少请求数,如何减少请求数!
- Shell命令行中特殊字符与其转义详解(去除特殊含义)
- css transform 3D幻灯片特效实现步骤解读
- 利用asp或jsp,flash怎样把数据库中的一张表中的所有记录读取并显示出来
- quartz定时执行任务,并配置web.xml的操作方法
- php中用foreach来操作数组的代码
- C语言实现xml构造解析器
- vue项目部署到nginx/tomcat服务器的实现
- centos7 安装mysql和mysqlclient遇到的坑总结