1. 程式人生 > >傳值與傳址--String的“特殊性”

傳值與傳址--String的“特殊性”

String為引用型別,作為引數傳遞時卻表現出“傳值”特性


==========================範例分析====================================== public class Main {
public static void main(String[] args) { final MyObject obj = new MyObjec("hello"); //String是final Object的一種
//final修飾符表明obj必須始終指向同一記憶體空間,但該記憶體空間的內容是可以修改的 change(obj); System.out.println(obj.name); //輸出"hello"
}
public void change(MyObject a) {  //應該注意到這裡的a為區域性變數,且沒有final修飾符。 //它和main中的obj變數目前指向同一記憶體空間 a = new MyObject("world");  //該語句將其指向新的記憶體空間,因此接下去的操作不會影響原來的物件 } } class MyObject { public String name = null; public MyObject() {}
public  MyObject(String name) { this.name = name; } }