String 類型做參數

來源:互聯網
上載者:User
package tmp;apublic class Main {public static void show(String s) {//s = "def";s = s+"def"; // S只是 show方法的一個局部變數,/* *  當我們 String str = "abc"; show(str) 調用這個函數的時候,以我們引用傳值的方式來判斷,為什麼str 的值不被改變? *  下面我們分析一下,方法還是以前的方法,調用 show()方法時,將str 所指對象的引用複製一份傳遞給show()方法中的S參數 *  接下來我們操作的就是S所指的對象,當我們在執行 s+"def" 時,其實 String類型和其他類型的區別就在於它的對象是不可變的 *  當我們再執行 s+"def"的時候,它其實又重新建立了一個對象,將其引用又重新賦值給了s,然函數執行完後,Str指向的還是以前的 *  對象,和以前並沒有什麼區別,只不過內在中又多了一個s+"def" 對象,(由於函數範圍,該對象可以很快就被回收) *  所以這是就為什麼String類型做參數效果和其他類型不一樣的原因,主要就是String 是一個不可變的對象,再加上函數範圍, *  傳遞過來的引用的值後,改變的是另一個對象,與原來的對象沒有關係,所以原來的對象沒有變 *  * */}public static void show(Person p) {p.setAge(100);}public static void show(Integer a) {a++;}public static void show(StringBuffer s){s.append("gggg");}public static void main(String args[]) {String str = new String("abc");show (str);System.out.println(str);// 沒有變// +-------------------------------------StringBuffer bf = new StringBuffer("abc");show(bf);System.out.println(bf);// 變了//+-------------------------------------Integer a = 1;show(a);System.out.println(a); // 沒有變//+-------------------------------------Person p  = new Person("boy",0);show(p);System.out.println(p);// 變了//+-------------------------------------}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.