2019-12-03 · 属性赋值的先后顺序

截止目前,我们讲了很多位置都可以对类的属性进行赋值。现在总结几个可以用来进行赋值的操作,并且找到先后顺序。

属性赋值方式有:
  1. 默认初始化
  2. 显式初始化
  3. 构造器中赋值
  4. 通过“对象.方法” 或者 “对象.属性”的方式赋值

判断属性赋值顺序:

首先默认初始化肯定是先执行的,因为一声明该属性,系统就会给属性上默认初始化值。

//1. 默认初始化
public class Test {
    public static void main(String[] args) {
        User u1 = new User();
        //默认初始化值
        System.out.println(u1.age); //输出默认值 0
    }
}

class User{
    //未赋值
    String name;
    int age;
}

接下来我们先看显式赋值和构造器赋值:

//2. 我们先让显式赋值输出
public class Test {
    public static void main(String[] args) {
        //未进行构造器赋值
        User u1 = new User();
        //输出显式赋值
        System.out.println(u1.age); // 1
            
    }
}

class User{
    String name;
    //先进行显式赋值
    int age = 1;
    
    //定义好的构造器
    public User() {}
    public User(int age) {
        this.age = age;
    }
}
//3. 构造器赋值,覆盖了我们的显式赋值
public class Test {
    public static void main(String[] args) {
        //进行构造器赋值
        User u1 = new User(2);
        //输出结果 为2
        System.out.println(u1.age);
            
    }
}

class User{
    String name;
    //先进行显式赋值
    int age = 1;
    
    //再使用定义好的构造器
    public User() {}
    public User(int age) {
        this.age = age;
    }
}

最后看通过“对象.属性” 或者 “对象.方法” 的方式调用赋值:

public class Test {
    public static void main(String[] args) {
        //进行构造器赋值
        User u1 = new User(2);
        //输出结果 为2
        System.out.println(u1.age);     
        
        System.out.println("--前后分割线--");
        //最后使用对象.属性赋值
        u1.age = 3;
        //输出结果 为3
        System.out.println(u1.age);
    }
}

class User{
    String name;
    //先进行显式赋值
    int age = 1;
    
    //再使用定义好的构造器
    public User() {}
    public User(int age) {
        this.age = age;
    }
}


总结:

我们可以从上述的操作中发现,属性赋值的先后顺序是(默认初始化 --> 显式初始化 --> 构造器中赋值 --> 通过“对象.方法”或者“对象.属性”的方式,赋值)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容