值传递和引用传递

       Java在调用函数的时候其实是另外开辟了内存空间,并copy了变量的副本。对于包括String在的对象来说就是声明了一个副本对象指向了同一个地址,在函数中改变该对象的属性,本体的属性也会跟着更改,如果调用中使用=让副本指向新的地址,则更改不会再改变本体的值。

值传递和引用传递

       如上面的例子a和a的副本指向同一个地址,所以更改副本a为AAA时,由于本体也指向这个地址所以本体也改变了,当a的副本指向b的副本的地址时,b、b的副本、a的副本均指向同一个地址,当a的副本改为CCC时,b的本体和b的副本都变成CCC了,故而a为AAA,b为CCC。

       由于String和基本数据类型只能通过赋值语句来更改,而且它们的赋值语句不存在指向同一片地址的可能(String不赋值跟本体相同),故而没有更改本体的可能