A = B是否与B = A相同?

时间:2018-09-11 01:00:20

标签: java initialization

为什么我的代码在initialAge = age;上出错?

当我在线查看解决方案时,应将其替换为age = initialAgeA = BB = A一样吗?


public class Person {
    private int age;    

    public Person(int initialAge) {
       if (initialAge >=0){
         initialAge = age;
       }else if( initialAge < 0){
            age =0;
           System.out.println("Age is not valid, setting age to 0.");

       }
        // Add some more code to run some checks on initialAge
    }

    public void amIOld() {
        // Write code determining if this person's age is old and print the correct statement:
        if (age <  13){
        System.out.println("You are young.");
        } else if ( age >= 13 && age < 18){
          System.out.println("You are a teenager.");  
        }else {
          System.out.println("You are old.");  
        }
    }

    public void yearPasses() {
        age++;
        // Increment this person's age.
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for (int i = 0; i < T; i++) {
            int age = sc.nextInt();
            Person p = new Person(age);
            p.amIOld();
            for (int j = 0; j < 3; j++) {
                p.yearPasses();
            }
            p.amIOld();
            System.out.println();
        }
        sc.close();
    }
}

1 个答案:

答案 0 :(得分:1)

在Java中,变量分配为right-to-left associative。对于您的理论示例,在分配上下文中,A = B意味着B的值现在存储在A中。将其交换表示A的值存储在B中。

使用==运算符执行数学等价运算。 = 总是表示分配。

关于您的代码为何与initialAge = age错误-initialAge是一个参数,在方法返回后它的值会丢失,因此重新分配它是有争议的。您的字段age的默认值为0,因为它没有获取initialAge的值。