A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ╭月牙湾湾╮ 中级黑马   /  2014-6-14 01:16  /  1964 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ╭月牙湾湾╮ 于 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;
        }




7 个回复

倒序浏览
:)论坛里还有活人啊
回复 使用道具 举报
:#发错了,应该是 这么晚了 还没睡啊:)
回复 使用道具 举报
楼主试着运行一下以下代码大概就知道为什么了吧

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

回复 使用道具 举报
kong7906928 发表于 2014-6-14 01:43
论坛里还有活人啊

:L亲真会说话
回复 使用道具 举报
yogaa 发表于 2014-6-14 02:19
楼主试着运行一下以下代码大概就知道为什么了吧

1        public class Deme

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

是的,刚刚看明白了。谢谢:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马