Discuss / Java / 练习:

练习:

Topic source

ypx0410

#1 Created at ... [Delete] [Delete and Lock User]
class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

关于输出两次输出Bob; 声明变量

String bob = "Bob";

是引用类型变量,所以存储的是一个地址,比如0x0011,指向Bob

调用方法时:

p.setName(bob);

此时传递的其实是地址:0x0011,指向的是bob,所以第一次打印的内容是:Bob。

然后重新赋值:

bob = "Alice"; // bob改名为Alice

但是在java中String类型是不可变的,当发生改变时,会重新分配内存,即生成一个新的内存地址,例如:0x0022,此时p.bob的内存指向仍为0x0011,也就是Bob,所以输出的依旧是Bob。


  • 1

Reply