问题如下,代码在下面:
调用函数前a的值为:18
a的内存地址为:1013423070
a属性的内存地址为:380936215
b的内存地址为:1013423070
b属性的内存地址为:142638629
调用函数后a的值为:0
为什么a属性的内存地址和b属性的内存地址不一样呢?这里不是只有一个Person对象么?
a属性的内存地址为:380936215
b属性的内存地址为:142638629
又有一个问题,a和b是不同的两个变量,为什么这里内存地址会相同呢?应该是a和b的值相同吧?
a的内存地址为:1013423070
b的内存地址为:1013423070
public class TestZhiAndYinYong
{
//引用类型:类和对象
public static void main(String[] args)
{
Person a = new Person();
a.age = 18;
System.out.println("调用函数前a的值为:" + a.age);
System.out.println("a的内存地址为:" + System.identityHashCode(a));
System.out.println("a属性的内存地址为:" + System.identityHashCode(a.age));
fun(a);
System.out.println("调用函数后a的值为:" + a.age);
}
public static void fun(Person b)
{
b.age = 0;
System.out.println("b的内存地址为:" + System.identityHashCode(b));
System.out.println("b属性的内存地址为:" + System.identityHashCode(b.age));
}
}
class Person
{
int age;
}