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。
Sign in to make a reply
ypx0410
关于输出两次输出Bob; 声明变量
是引用类型变量,所以存储的是一个地址,比如0x0011,指向Bob
调用方法时:
此时传递的其实是地址:0x0011,指向的是bob,所以第一次打印的内容是:Bob。
然后重新赋值:
但是在java中String类型是不可变的,当发生改变时,会重新分配内存,即生成一个新的内存地址,例如:0x0022,此时p.bob的内存指向仍为0x0011,也就是Bob,所以输出的依旧是Bob。