黑马程序员技术交流社区

标题: 发到基础题帮忙分析下 [打印本页]

作者: wxy19891017    时间: 2015-6-9 23:03
标题: 发到基础题帮忙分析下
class Penguin {
    private String name=null; // 名字
    private int health=0; // 健康值
    private String sex=null; // 性别
    public void Penguin() {
          health = 10;
          sex = "雄";
          System.out.println("执行构造方法。");
    }
    public void print() {
          System.out.println("企鹅的名字是" + name +
                     ",健康值是" + health + ",性别是" + sex+ "。");
    }
    public static voidmain(String[] args) {
          Penguin pgn = newPenguin();
          pgn.print();
    }
}
结果是多少

作者: 王超群    时间: 2015-6-9 23:03
null  0  null 因为构造函数前面加了返回值类型所以不执行
作者: 君子无醉    时间: 2015-6-11 01:32
并不是不执行,而是你没有调用你自己设定的赋值方法。 楼上哥们说的不太严谨...你写的这个赋值方法,因为有返回值语句,所以并不算是构造方法,所以等于你并没有自己定义构造方法,  所以系统会默认创建一个无参构造,你的new语句后面就是调用的这个无参构造,是一个空语句 什么都不执行,所以会输出变量的初始赋值null,0,null。。。你如果想启用这个方法的话,要么把你写的那个类似构造方法的声明中void去掉,或者在调用print()语句前写,pgn.Penguin()。。
作者: lucien_he    时间: 2015-6-13 23:23
围观学习下
作者: 天涯回望    时间: 2015-6-15 22:48
null -0-null  构造函数是没有返回值,也没有返回值类型的,Penguin这个方法就没有调用,我觉得这应该是出题的人故意放出的一个烟雾弹
作者: zlsucceed    时间: 2015-6-16 10:51
看下学习气氛很是好的啊
作者: leiyong    时间: 2015-6-17 16:49
null -0-null 构造函数没有返回值,所以第一个不是构造函数,在main方法中值调用了print方法所以输出结果应该是:"企鹅的名字是" null
                     ",健康值是" +0+ ",性别是" + sex+ "null。"

作者: anoofeng    时间: 2015-6-18 09:10
调用了系统默认的空参构造函数,什么都没做,所以成员变量只有开始的默认值。
    private String name=null; // 名字
    private int health=0; // 健康值
    private String sex=null; // 性别
作者: 图图_黑马    时间: 2015-6-23 15:00
楼上很多正解!其实你没有自定义的构造函数,程序会自动调用从Object类继承而来的构造函数:
public Penguin() {super();   }

而你自己写的不是构造函数,构造函数与其他函数的区别就是不带返回值类型。
public void Penguin() {
          health = 10;
          sex = "雄";
          System.out.println("执行构造方法。");
    }

但是如果你有调用pgn.Penguin()结果就又不一样了。
作者: 成佳裕    时间: 2015-7-4 21:14
那不是构造方法




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