不是A = B与B = A相同吗?

问题描述 投票:0回答:1

为什么我的代码在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();
    }
}
java initialization
1个回答
1
投票

在Java中,变量赋值是right-to-left associative。对于您的理论示例,在赋值上下文中,A = B暗示B的值现在存储在A中。交换它意味着A的值存储在B中。

使用==算子执行数学等价。 =总是指任务。

至于为什么你的代码错误的initialAge = age - initialAge是一个参数,它的值在方法返回后丢失,所以重新分配它是一个没有实际意义的点。您的字段age的默认值为0,因为它没有获得initialAge的值。

© www.soinside.com 2019 - 2024. All rights reserved.