一、String[]数组
String[] fullname = new String[] { "Homer", "Simpson" };
1、fullname 存放的是对象的 地址指针,对象是属性如下:
{ "Homer", "Simpson" }
2、下面调用类函数,其实是把“fullname”复制了一遍,这个也是个 地址指针,同时指向 上面的对象。
p.setName(fullname); // 传入fullname数组
3、然后将String fullname数组的第一个属性,替换成“Bart”
fullname[0] ="Bart"
也就是对象属性被替换了,所以第一次是 “Homer”,第二次是“Bart”。
二、String对象
1、String bob 存放的是对象的属性是"Bob"
String bob = "Bob";
2、下面调用类函数,其实是把“bob”复制了一遍,这个也是个 地址指针,同时指向上面的对象。
p.setName(bob); // 传入bob变量
3、因为String的不可更改性质,赋值“Alice”的是时候是 bob 指向了一个新的 对象“Alice”,不是替换原来的“Bob”
bob = "Alice"; // bob改名为Alice
而原来的p.setName(bob),内的bob还是指向“Bob”对象,所以第一次是bob,第二次还是bob
这样就解释通了
Sign in to make a reply
尼玛作坊
一、String[]数组
1、fullname 存放的是对象的 地址指针,对象是属性如下:
2、下面调用类函数,其实是把“fullname”复制了一遍,这个也是个 地址指针,同时指向 上面的对象。
3、然后将String fullname数组的第一个属性,替换成“Bart”
也就是对象属性被替换了,所以第一次是 “Homer”,第二次是“Bart”。
二、String对象
1、String bob 存放的是对象的属性是"Bob"
2、下面调用类函数,其实是把“bob”复制了一遍,这个也是个 地址指针,同时指向上面的对象。
3、因为String的不可更改性质,赋值“Alice”的是时候是 bob 指向了一个新的 对象“Alice”,不是替换原来的“Bob”
而原来的p.setName(bob),内的bob还是指向“Bob”对象,所以第一次是bob,第二次还是bob