黑马程序员技术交流社区

标题: 求代码运行结果的分析 [打印本页]

作者: ╭月牙湾湾╮    时间: 2014-6-14 01:16
标题: 求代码运行结果的分析
本帖最后由 ╭月牙湾湾╮ 于 2014-6-14 23:27 编辑

一直忙着赚技术分和黑马币,自己分享的练习题自己都没有仔细的去看和做,刚刚认真看了一下,被一个题给难倒了,试运行了一下,跟我自己推算的结果很不一致,求高手帮我分析一下结果为什么是AB呢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;
        }





作者: kong7906928    时间: 2014-6-14 01:43
:)论坛里还有活人啊
作者: kong7906928    时间: 2014-6-14 01:44
:#发错了,应该是 这么晚了 还没睡啊:)
作者: yogaa    时间: 2014-6-14 02:19
楼主试着运行一下以下代码大概就知道为什么了吧

1        public class Deme
2                public static void main(String[] args) {
3                      int i = 0;
4                      for (boolean b = false; b = false && (i < 2); b = false) {
5                                          i++;
6                              System.out.println("返回值为true,我就运行");
                      }
                 }
            }

运行结果是:                                                     (什么也没有)
然后再把第六行的代码改为  for (boolean b = false; b = true && (i < 2); b = false){
在运行一下,运行结果是:返回值为true,我就运行。返回值为true,我就运行
我认为,你写的那个代码中的for循环和这个道理是一样的,也就是说for循环中的循环条件boolean所返回的值一直为false,所以循环体内的代码不会被执行。
你要是把Demo类复写的方法boolean show()中的返回值改为true,就能够执行for里面的代码块了,运行结果是:
A
B
D
C
B
D
C
B


作者: ╭月牙湾湾╮    时间: 2014-6-14 21:03
kong7906928 发表于 2014-6-14 01:43
论坛里还有活人啊

:L亲真会说话
作者: ╭月牙湾湾╮    时间: 2014-6-14 21:10
yogaa 发表于 2014-6-14 02:19
楼主试着运行一下以下代码大概就知道为什么了吧

1        public class Deme

哦哦 是的呢,我忘了多态下,非静态方法运行是看子类的,运行的就应该是子类复写以后的方法,因此for条件语句为false,所以只打印A、B。业务不熟练啊,呵呵。谢谢你啦,那么耐心的回帖!
作者: 任黎明    时间: 2014-6-14 21:20
重写了boolean show(chsr a)函数,f.show('B')&&(i<2)=false,循环没有执行
作者: ╭月牙湾湾╮    时间: 2014-6-14 21:29
任黎明 发表于 2014-6-14 21:20
重写了boolean show(chsr a)函数,f.show('B')&&(i

是的,刚刚看明白了。谢谢:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2