Java笔试题学习之03

版权声明:欢迎转载,期待指正 https://blog.csdn.net/fighting_sxw/article/details/89738133
public class Person {
    private String name = "haha";
    static int age = 0;

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

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

输出:
小强:-1
分析:

  1. 构造器中的return语句的作用是离开当前构造器,不会编译报错
  2. Person的age是静态变量,不依赖于对象
  3. Person.age-- 先赋值再运算,所以执行Person构造器时,先将Person.age的值 ’0‘传递给构造器中的形参age,然后再做减一操作,Person.age的值变为-1
  4. Person构造器中的age(没有加this关键字)和静态变量age不是同一个变量,根据上面的分析,构造器中的age的值为0,所以跳过if中的内容
  5. 构造方法中没有name变量,所以name是Person对象的成员变量,被赋值为小强
  6. age = ++age; 操作的是构造器中的age变量
  7. System.out.println(name + “:” + Person.age); 这里打印的是name的值,和静态变量age,根据前面的分析,静态变量age的值为-1

所以最终输出:小强:-1
ps:从大佬的抖音直接搬运过来,抖音号:Todaystart,不妥之处,还望指正!

猜你喜欢

转载自blog.csdn.net/fighting_sxw/article/details/89738133