黑马程序员技术交流社区
标题:
代码执行结果是什么?
[打印本页]
作者:
蓝枫
时间:
2014-3-26 11:12
标题:
代码执行结果是什么?
class Fu
{
boolean show(char a)
{
System.out.println(a)
return true;
}
}
class Demo extends Fu
{
public static void main(String[] args)
{
int i =0;
Fu f =new Demo();
Demo d = new Demo();
for(f.show('A');f.show('B')&&(i<2);f.show('C'))
{
i++;
d.show('D');
}
}
boolean show(char a)
{
System.out.println(a)
return false;
}
}
这道题的执行结果是什么?求各位详解!谢谢了!
复制代码
作者:
H-Deka
时间:
2014-3-26 11:41
A
B
D
C
A
B
D
C
按循环步骤来的
作者:
Up↑Lee↗
时间:
2014-3-26 12:01
class Fu
{
boolean show(char a)
{
System.out.println(a);
return true;
}
}
class Demo extends Fu
{
public static void main(String[] args)
{
int i =0;
Fu f =new Demo();
Demo d = new Demo();
for(f.show('A');f.show('B')&&(i<2);f.show('C'))
{
i++;
d.show('D');
}
}
boolean show(char a)
{
System.out.println(a);
return false;
}
}
//这道题的执行结果是什么?求各位详解!
复制代码
你源代码有错误,忘记两个分号 结果如下图:
QQ截图20140326120122.png
(139.72 KB, 下载次数: 199)
下载附件
2014-3-26 12:01 上传
作者:
宋超2356
时间:
2014-3-26 12:29
class Fu
{
boolean show(char a)
{
System.out.println(a)
return true;
}
}
class Demo extends Fu
{
public static void main(String[] args)
{
int i =0;
Fu f =new Demo();
Demo d = new Demo();
for(f.show('A');f.show('B')&&(i<2);f.show('C'))
{
i++;
d.show('D');//这里返回了false后for循环就结束了,所以执行不到f.show('C')
}
}
boolean show(char a)
{
System.out.println(a)
return false;
}
}
复制代码
两次System.out.println后记得分号...
作者:
xuehuayous
时间:
2014-3-26 12:45
应该是AB
Step1:程序开始执行for循环,f.show('A'); 打印出A,由于show中有return语句,而return表示方法结束返回了些数据给调用方法方法执行 ,所以return跳转回原来调用方法位置了,因而没有执行循环体。
Step2:然后判断f.show('B')&&(i<2); 因为是判断,所以(f.show('B')&&(i<2);)返回boolean类型值,执行f.show('B')打印出B,且“&&”为短路与,f.show('B')返回false,所以就不用执行(i<2)的判断,其实i一直等于0的。程序结束。
说的有点乱,我觉得就是这个样子的,希望对你有帮助!
作者:
QQNumber
时间:
2014-3-27 14:27
返回AB,for里面三个第一个返回false,但是这个不用于判断,第二个返回false,判断,结束循环,打印B了
作者:
╰青青子佩ˊゝ
时间:
2014-3-29 09:56
答案是AB
涉及到多态,你要搞清楚,Fu f = new Demo()中的这个f是子类Demo的对象(可以试着举个动物的例子),所以for(f.show('A');f.show('B')&&(i<2);f.show('C'))中的f.show()其实是调用子类Demo对象中的show方法,跟父类show方法没有任何关系。for.show('A')是初始化表达式,第一时间被执行,打印出A,而f.show('B')这个表达式打印了B且返回的是false,不是true,那么不能进入for循环。连循环都没进去过,所以说结果为A,B.这个答案希望你能满意。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2