Javaforfor语句是先判断再循环吗中的判断语句

最近群友抛出了一个面试题就昰下图中的第二题,是关于一个forfor语句是先判断再循环吗的执行结果的问题他的代码的执行结果是什么呢? 

下面的例子和面试题上面的大哃小异是个非常简单的例子。首先这个代码是可以编译通过的也可以正常执行的。那么执行结果是什么呢会跟我们猜想的一样吗?

* forfor語句是先判断再循环吗的一些疑问

那么问题来了为什么是这个结果呢?我们可以借助javap命令反编译我们刚才编译的T.class进行分析 如果对jvm不了解的可以参阅。

  • 先贴出原版的字节码反编译后的代码后边会对反编译的文件进行逐行解析,那么我们先来看看上述类反编译后的样子吧如下所示:

    

对反编译后的文件是不是一脸懵逼,没太看懂是什么意思呢没关系,下面我们进行逐行分析

 public T(); // 这里是默认生成的无参构造函数部分开始
 // 这里是默认生成的无参构造函数部分结束
 3: iload_0 //从局部变量表中加载int型的数据到操作数栈
 16: iload_1 //从局部变量表中加载int型的数据到操作数栈

從反编译文件以及流程图中我们可以看出forfor语句是先判断再循环吗执行的顺序是:

所以我们的执行输出结果是:abdcbdcb

不对之处还望大家指正。

for代码只会for语句是先判断再循环吗for後面大括号里面的那些并不会在第二次再执行long t = num;

这样的话输出2后面应该直接是3 了
 因为你的输出语句也在while内,所以while执行一次就会输出一次,比如你说的180进去先除以2等于90余0,就会输出2但是得到的90会继续执行while语句,因为90除以2还是余0所以继续输出2,第三遍的时候45%2不为0了那麼久跳出了whilefor语句是先判断再循环吗,进入外层forfor语句是先判断再循环吗i++,i成了3继续执行45%3==0输出3

你对这个回答的评价是?

下载百度知道APP抢鮮体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

如果这个判断成立的话就会走return x方法也就到此结束,就不好走return -1了

是不是就是说在函数调用中 forfor语句是先判断再循环吗内部的return语句只要执行一遍 那么for语句也就随即中止for语句是先判断再循环吗了

这个问题有意思, return -1 是该方法 int 类型 所以必须返回 int类型的数值 , 但如果返回执行

 

还有不清楚的话你可以打断点 调试一下

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 for语句是先判断再循环吗 的文章

 

随机推荐