首页 > 试题广场 >

以下程序的执行结果是: static boolean fo

[单选题]
以下程序的执行结果是:
static boolean foo(char c){
     System.out.print(c);
     return true;
 }
 public static void main(String[] args) {
     int i =0;
     for(foo('A');foo('B')&&(i<2);foo('C')){
         i++;
         foo('D');
     }
 }

  • ABDCBDCB
  • ABCDABCD
  • 编译时出错
  • 运行时抛出异常
1.其实foo(‘A’);就是初始化条件,只会执行一次,所以第一个打印的肯定是A 
2.因为i=0;循环条件是i<2 (由此可知循环i等于2的时候就会停止循环,)所有0<2满足条件,接着会输出B,然后执行i++;i就变成1了,再输出D,再最后输出C,一次循环后的结果是:ABDC 
3.第二次循环的开始是foo(‘A’);是初始条件所以不会执行,直接从foo(‘B’)开始,输出B,然后i为1,且小于2,此时循环体内再次执行i++;i的值为2了,再次输出D,最后输出C 
第二次循环输出:BDC 
4.*然后循环再次执行for(foo(‘A’);foo(‘B’)&&(i<2);foo(‘C’)) 
直接输出B,***i的值在第二轮循环后的值变成了2,2<2不成立,终止循环,输出B
--------------------- 
作者:deoppressoliber 
来源:CSDN 
原文:https://blog.csdn.net/deoppressoliber/article/details/54574631 
版权声明:本文为博主原创文章,转载请附上博文链接!
发表于 2019-06-03 17:05:37 回复(10)
考察的是for循环三条语句的执行顺序 for(第一条语句;第二条语句;第三条语句;) 首次循环时先执行前两句。以后的每次循环结束,都是执行最后一条语句,然后执行判断语句(也就是第二条语句)条件成立进入下一次循环。 第一条语句只会被执行一次
发表于 2019-11-20 11:19:09 回复(3)

for(循环开始条件;判断条件;循环后条件)

按照执行顺序依次执行

发表于 2019-10-24 15:02:54 回复(0)
发表于 2019-08-07 09:38:08 回复(0)
<p>原来for循环的括号中三个表达式只有中间是限定了布尔类型的,前后都不限定类型。</p>
发表于 2020-12-03 21:12:01 回复(0)
这道题考察的就是for循环的运行顺序,foo('A')、foo('B')、foo('C')的值都是true,foo('A')就是初始化条件只执行一次。foo('B')&&(i<2)是判断条件,因为foo('B')总是true所以当 i<2 返回false的时候for循环就停止了。foo('C')是最后的。然后foo('B')&&(i<2) → foo('D') → foo('C')。最后一个字母是B因为需要判断for循环的条件不成立
发表于 2020-06-27 10:58:15 回复(1)
考察的是for循环三条语句的执行顺序 for(第一条语句;第二条语句;第三条语句;) 首次循环时先执行前两句。以后的每次循环结束,都是执行最后一条语句,然后执行判断语句(也就是第二条语句)条件成立进入下一次循环。 第一条语句只会被执行一次
发表于 2020-03-30 17:39:36 回复(0)
循环开始条件只执行一次
for(循环开始条件;判断条件;循环后条件)

按照执行顺序依次执行

发表于 2020-02-28 10:54:20 回复(0)
&&不是短路运算吗?i<2会执行吗?
发表于 2022-10-21 14:26:07 回复(1)
For循环的问题
发表于 2021-10-18 07:32:47 回复(0)
求求有点缩进吧,我脾气又上来了
发表于 2021-05-14 17:24:35 回复(0)
循环开始,先执行for中前两句,而且第一句的变量初始只会执行一次,后面去做条件的判断,满足条件就进入循环,执行完毕后再寻找for的第三句话,第二次循环直接去做条件的判断,如果满足则进入循环,否则退出循环过程。
发表于 2021-03-02 09:54:33 回复(0)
解析:这道题涉及到了for循环的相关知识点,这个题目中的Test类有两个重要部分组成 部分一:准备工作是定义了一个foo()方法,调用该方法时参数是传一个字符,然后打印C字符,然后方法调用完返回true值。每调一次foo()方法都会把参数打印出来,然后返回true。 部分二:然后我们来看main方法里面,首先定义了一个局部变量i,初始化值为0,然后定义了一个for循环,这个for循环的三个核心要素都具备,分别是初始化表达式 foo('A'),循环条件表达式 foo('B'),循环后操作表达式。循环体中是 i++ 以及打印 foo('D') 。 然后开始解题,首先记住变量 i = 0,然后开始执行for循环的初始化表达式,结果是打印A,然后判断循环条件表达式 && 左边为true,并且打印 B;&& 右边 i =0<2 ,结果为true,所以循环条件表达式结果为true。进入循环体,i++,然后执行foo('D'),打印D。继续执行for循环的循环后操作表达式打印C,然后执行条件表达式,&& 左边打印B,结果为true ,&&右边i=1<2, 结果为true,所以循环条件表达式结果为true,进入循环体i++,打印D,然后执行 foo('C')打印C,然后执行循环条件表达式&&左边打印B,但是&&右边i=2<2,结果为false,所以跳出for循环。 条件表达式结果为true,进入循环体i++,打印D,然后执行 foo('C')打印C,然后执行循环条件表达式&&左边打印B,但是&&右边i=2<2,结果为false,所以跳出for循环。 原创内容 详情见: https://blog.csdn.net/weixin_75202470/article/details/132338711?spm=1001.2014.3001.5502
发表于 2023-08-17 13:39:43 回复(0)
这里foo('B')&& 会return true,不会直接短路,不会进行下一步i<2判断吗,导致死循环?
发表于 2022-09-26 13:45:41 回复(0)
int i = 0;
for (int j = 0; i <2 ; j++) {
    i++;
    foo('D');
}
int j = 0是初始化条件,只会执行一次;
i<2 是循环条件是,每次循环都会执行判断;
j++是循环后条件,每次循环结束都会执行。

这样看是不是就清楚了,把 int j = 0; 换成 foo('A');把i <2;换成foo('B')&&(i<2);把j++换成foo('C')

所以循环第一次时,i = 0,先执行 int j =0的判断(即执行foo('A')),然后执行 i <2的判断(即foo('B')&&(i<2);)
判断都成立,则执行循环体里面的内容,即 i++ ,然后 foo('D');最后执行 j++(即执行foo('C')) 此时输出 ABDC
第二次循环,此时 i=1,先执行 i <2的判断(即foo('B')&&(i<2););
判断成立,则执行循环体里面的内容,即 i++ ,然后 foo('D');最后执行 j++(即执行foo('C'))。BDC
第三次循环,此时 i=2,执行 i <2 (即执行即foo('B')&&(i<2);)此时foo('B')成立,(i<2)不成立;退出循环。此时只输出了B

最终的输出结果则是 ABDCBDCB
    

发表于 2024-09-11 14:05:28 回复(0)
考察的是for循环三条语句的执行顺序 for(第一条语句;第二条语句;第三条语句;) 首次循环时先执行前两句。以后的每次循环结束,都是执行最后一条语句,然后执行判断语句(也就是第二条语句)条件成立进入下一次循环。 第一条语句只会被执行一次
发表于 2024-08-10 09:14:36 回复(0)
for看成foo 淦
编辑于 2024-01-25 14:24:48 回复(0)
for(初始表达式1; 条件表达式2; 步进表达式4){
    //循环体3
}
//执行顺序:1234->234->234->234->2...

发表于 2023-12-24 11:08:52 回复(0)
for(a,b,c)
1.a初始化执行一次
2.执行b,b是一个表达式,每次循环都会执行
3.在执行完表达式后,符合条件,就执行循环体代码
4.最后执行c部分
编辑于 2023-12-17 11:49:55 回复(0)
这题考的还是for循环执行顺序问题。
for循环中第一个是初始化条件(只会执行一次),第二个是终止条件,第三个是更新操作。

for循环首先会初始化,然后判断遍历是否满足终止条件,如果不满足,则会进入for循环执行操作,操作执行完成后,执行更新操作,然后再次判断是否满足终止条件……
发表于 2022-09-23 11:04:02 回复(0)