刚才看帖子,里面有这么段代码,真是没看明白。代码如下:public class TestDemoFor {
public static boolean print(char c){
System.out.println(c);
return true;
} public static void main(String[] args){
int i = 0;
for (print('A');print('B') && i < 2;print('C')){
print('D');
i++;
}
}}
为什么?
public static boolean print(char c){
System.out.println(c);
return true;
} public static void main(String[] args){
int i = 0;
for (print('A');print('B') && i < 2;print('C')){
print('D');
i++;
}
}}
为什么?
解决方案 »
- 关于xpath
- 二叉树算法,中的中树遍历很是不理解,求指点。
- 小题目一道 帮帮忙
- TOMCAT 和 Active Directory 连用来做 user authentication (有请 Kerberos, SPNEGO 高手来帮忙 )
- 加减乘除 改成JAVA代码
- javamail的收邮件得不到正文的问题!请帮忙啊。
- JDBC更新float出问题
- 我想问问!!我做的聊天室程序,我在本机上连接2个客户端试试都可以连通,但是我发给别的主机,为什么他就连接不上我呢?而且提示有java.
- sendmail的问题
- applet和servlet调用一个jar里的类,这个jar包应该放在哪里?
- java编译问题
- Swing程序打包发布,并且安装成windows服务
int i=0;
for ( true;true&&i<2;true ){
print('D');
i++
}这个应该能看明白吧。循环2次结束
其实你也可以类比。
print('A')(相当于int i=0的初始化),然后print('B')(相当于i<某个数)。
print('C')(相当于i++)
是不是就明白了?
那么结果应该是ABDCBDCB吧
很明显,语句执行顺序是这样的:
print('A');
print('B') && i < 2;
print('D'); i++;
print('C');
print('B') && i < 2;
print('D'); i++;
print('C');
print('B') && i < 2;
所以结果就是
A
B
D
C
B
D
C
B
int i = 0;
for (print('A');print('B') && i < 2;print('C')){
print('D');
i++;
}开始执行print('A'),然后print('B') && i < 2,满足循环条件,执行循环体,然后print('C'),然后回来判断是否满足循环条件(print('B') && i < 2),满足执行循环体,再执行print('C'),再判断是否满足循环条件,满足则执行循环体,不满足则循环停止,以此类推。
A
B
D
C
A
B
D
C
A
B
你一句一句的分析就清楚了,其实不断的再For语句中调用print这个静态函数而已
print函数根据上面的定义就是把参数打印出来,返回一个true,也就是说print方法始终都是返回true的
上面的代码翻译过来就是:
for(true;true&&i<2;true){
System.out.println('D');
i++;
}
运行的结果是:
A
B
D
C
B
D
C
B
当i=2时,程序进行print('B') && i < 2这句时,print('B')时执行的所以最后打印出B,
i<2=false所以程序退出
这样去理解就明白了