Java笔试题——Problem3

Problem

以下程序是否能运行,结果是什么?

public class Person {
    private String name = "haha";
    static int age = 0;

    public Person(String name, int age) {
        if (age < 0) {
            System.out.println("初始化不合法");
            return;
        }
        this.name = name;
        age = ++age;
        System.out.println(name + ":" + Person.age);
        return;
    }
}

class PersonTest {
    public static void main(String[] args) {
        Person p = new Person("小强", Person.age--);
    }
}

Answer

可以运行,构造器中使用return的作用是离开当前构造器,运行结果为“小强:-1”,调用构造器,因为age--,所以初入的Person的static属性age的值为0,但是Person的age之后则为1,调用构造方法时,age为0,不为真,不进if语句,在构造器中age为形参,与类变量age无关,return离开构造器。

你可能感兴趣的:(Java笔试题——Problem3)