Java傳值和傳址,java傳值

來源:互聯網
上載者:User

Java傳值和傳址,java傳值

調用函數時,傳的參數過去可能是傳值,也可能是傳址。如果是傳值,函數內部的操作對參數的值沒有影響;如果是傳址,函數內部的操作是對參數指向的記憶體進行操作,會影響參數的值。

Java到底是傳值還是傳址?用下面這個例子可以實驗一下:

package test;import java.util.ArrayList;import java.util.List;public class ValueAndAddress {        public static void f1(int x){        x = x + 5;        return;    }        public static void f2(String s){        s = new String("10000");        return;    }        public static void f3(List<Integer> list){        list.remove(0);        list.remove(1);        list.remove(2);        return;    }        public static void main(String[] args) {        int x = 5;        String s = new String("abcdef");        List<Integer> list = new ArrayList<Integer>();        list.add(0);        list.add(1);        list.add(2);        list.add(3);        list.add(4);                f1(x);        f2(s);        f3(list);                System.out.println("x=" + x);        System.out.println("s=" + s);        for (int i=0; i<list.size(); i++){            System.out.println("list[" + i + "]=" + list.get(i));        }            }}

運行結果:

可見,int和String類型的參數值沒有發生改變,是傳值,而List類型的參數值發生了改變,是傳址。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.