一段java代码

xfsunxiaolong 2011-09-28 09:57:56
public class j1 {
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');
}
}
}得到什么样的结果,为什么会是这个结果。能详细说下执行顺序么

...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ETCentury 2011-09-29
  • 打赏
  • 举报
回复
这个问题我以前也遇到过,基础不扎实哦。勉之
susuifeng 2011-09-29
  • 打赏
  • 举报
回复
可以使用javap命令分析一下编译后的字节码,如http://tech.techweb.com.cn/thread-513346-1-1.html



thomaslwq 2011-09-28
  • 打赏
  • 举报
回复
二楼正解。。。
_了凡_ 2011-09-28
  • 打赏
  • 举报
回复
ABDCBDCB,主要是for语句的执行流程,例如
for (initialization; condition; modification) {
// 代码体
}
先执行initialization,然后执行代码体,然后执行modification,
然后再执行condition,若满足条件则再执行代码体,然后依此类推;若
不满足条件则跳出for语句。
还有,楼主对&&和||条件判断的所谓“优化”知道吧,比如:
condition1&&condition2,若是condition1为假则condition2就不会执行;
condition1||condition2,若是condition1为真则condition2就不会执行;
simon1990 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qybao 的回复:]

首先foo(A),输出A
接着foo(B),输出B,返回true
for条件 true && (i<2) 为true,满足循环条件,进入循环体
i++变成1
foo(D),输出D
然后循环累增处理,执行foo(C)输出C
然后继续判断循环条件,foo(B)输出B,i<2为true,for循环条件成立,进入循环体
i++变为2
foo(D)输出D
然后循环累增处理……
[/Quote]
学习了 顶起
  • 打赏
  • 举报
回复
学到了知识,顶
iXiaXianBing 2011-09-28
  • 打赏
  • 举报
回复
结果是 ABDCBDCB 考查for循环结构;for(foo('A');foo('B')&&(i<2);foo('C'))中
首先是赋初值的foo('A')返回A
然后判断条件foo('B')&&(i<2);返回B;且成立;
进入循环体,执行i++;和foo('D')返回D,i值变为1;
然后进入循环控制变量的foo('C')返回C;

此时一个循环完成,进入下一循环:
判断条件foo('B')&&(i<2);返回B;成立;
进入循环体,执行i++;和foo('D')返回D,i值变为2;
然后进入循环控制变量的foo('C')返回C;

此时第二个循环完成,进入下一循环:
判断条件foo('B')&&(i<2);返回B;但foo('B')&&(i<2)条件不成立,for循环结束!


qybao 2011-09-28
  • 打赏
  • 举报
回复
首先foo(A),输出A
接着foo(B),输出B,返回true
for条件 true && (i<2) 为true,满足循环条件,进入循环体
i++变成1
foo(D),输出D
然后循环累增处理,执行foo(C)输出C
然后继续判断循环条件,foo(B)输出B,i<2为true,for循环条件成立,进入循环体
i++变为2
foo(D)输出D
然后循环累增处理,执行foo(C)输出C
然后继续判断循环条件,foo(B)输出B,i<2为false,循环结束
所以程序输出结果是
ABDCBDCB

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧