值傳遞和引用傳遞的問題

2021-10-10 23:30:35 字數 750 閱讀 7538

先看看下面這段**的輸出結果:

public

class

example

;public

static

void

main

(string args)

public

void

change

(string str,

char ch)

}

結果是:

tarena and gbc

解釋:1.為什麼string字串的值是不可變的?當我們new乙個字串,給它賦值之後,那麼當前物件的值就固定了,永遠不會改變。比如string str=new string(「test」),那麼str的值就是test,這是因為在string原始碼當中是用char陣列來按順序儲存字串中的每乙個字元的,並且這個char陣列是用final修飾的,這意味著一旦我們給字串賦值之後,這個物件的值就永遠不會改變。2.可是當我們在乙個類當中的某個方法裡面,給這個物件str賦值了乙個新的字串,它這時候的值是多少呢?比如這時str=「good」,str的值就是good,(你可以在這個方法裡面寫輸出語句,輸出這個引用,就知道怎麼回事了)可不是說引用的值不可以改變麼?這裡改變的不是引用的值,而是引用str指向的常量不一樣了而已,而這個引用的生命週期和當前方法的一樣的,也就是方法結束,引用被殺死,也結束了,那麼它剛才指向good的這個引用,就結束了,所以在這個方法結束之後,再輸出引用str的值,自然就是引用str之前指向的值了,也就是test。

值傳遞和引用傳遞

幾乎每種語言都有值傳遞和引用傳遞.下面是我的一些曲解,只講現象,不涉及到任何的原理,主要是鬧著玩的.a 新交了個女朋友b.有一天他女朋友b看見a在吃冰激凌,b想吃,但是a是個 座有點小潔癖,不想讓b吃,於是給b買了個新的冰激凌說你吃這個吧,別碰我嘴裡這個.這就是值傳遞.a和b的值沒有任何關係,他們一...

值傳遞和引用傳遞

1.什麼是值傳遞和引用傳遞 值傳遞 方法呼叫時,實際引數的值copy乙份傳遞給形式引數,此時,有兩個相等的數值分別儲存於不同的記憶體位址上,因此,後面的方法中都是對形參位址上的數值進行修改。引用傳遞 方法呼叫時,實際引數的值 也就是位址 copy乙份傳遞給形式引數,此時,形參和實參的引用都指向同一儲...

值傳遞和引用傳遞

定義 通過建立乙個實際引數的副本,再傳遞給方法的形式引數,在main自身並不會被使用。這個在我們第一次使用編寫交換數的方法時,基本都會遇見,當我呼叫a,b兩個變數時,通過交換方法交換他們的位置,但是沒用,這就是值傳遞,乙個坑 public class switchnum switchnum a,b ...