java值傳遞與引用傳遞

字號:

java中沒有了c++中 & 這樣的引用符號,也沒像c#中那樣提供了out與ref 那么它是怎么做的呢
    做什么事情都要去除例外的東西,String類就是此類問題的一個特殊情況
    為什么特殊呢?
    因?yàn)樗且粋€引用類型,確執(zhí)行的是值傳遞。這樣說有些抽象,還是舉個例子吧
    值傳遞:
    class Str
    {
    public static void main(String[] args)
    {
    int i = 900;
    System.out.println(i);
    changeInt(i);
    System.out.println(i);
    }
    public static void changeInt(int s)
    {
    s = 34234;
    }
    }
    結(jié)果:
    900
    900
    這就是所謂的值傳遞。i把自己的副本給了函數(shù)changeInt的形參,而在changeInt中雖然將s賦值34234.但是對原來的i值并沒有影響,因?yàn)樗薷牡闹皇莍的copy品而已。
    引用傳遞:
    class Str
    {
    public static void main(String[] args)
    {
    Yinyong y = new Yinyong();
    System.out.println(y.age);
    changeObject(y);
    System.out.println(y.age);
    }