![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
求java大神分析下解题思路,和答案,谢谢! 10
ABDCBDCB
for (initialization; termination; increment) {
statement(s)
}
第一次循环:
initialization在循环开始仅执行一次,执行foo('A');接着执行termination表达式,foo('B') 为true 并且 0 < 2,然后执行statement(s),即 i 变为1,执行foo('D');
statement(s)执行完后最后执行increment,即foo('C'),第一次循环结束后打印 ABDC
第二次循环:
initialization仅执行一次,这次循环不再执行,其他执行顺序同第一次循环,所以第二次循环结束后打印BDC
第三次循环:
执行termination表达式,foo('B') 为true 但 2 < 2不成立,所以循环结束,仅打印B
综合三次循环,打印结果为:ABDCBDCBnull
null
dervied
dervied
创建Dervied类的对象时,发现父类对象尚未创建,于是会先调用父类的构造函数,父类构造函数中又调用了对象方法,此时对象的成员变量name尚未赋值,因此打印null,注意此时仅仅是调用构造函数,赋值语句 private String name = "base" 必须等到执行形如 new Base()时才会被执行,因此打印默认的初始值 null;父类构造函数完成后接着执行Dervied的构造函数,此时name已经被赋值为dervied,因此打印出来 dervied
//第二步 && 为逻辑判断符,foo('B')这个返回true 打印B 而 i<2 返回的也是true 所以最终结果也为true
//当符合循环条件是回执行下一步 i++
//然后执行foo('D') 打印 D
//在for循环中foo('C') 最后执行 ,所以打印出 C
//当 i< 2 不满足时 返回 false 那条件最终返回false 不符合循环条件 跳出循环
// 结果为 A B D C B D C B
这是第一张图的 ,第二张晚上给你发
广告 您可能关注的内容 |