您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java如何實現值傳遞,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
值傳遞是在一個函數中,調用另外一個函數,其中含有參數傳遞的情況。往往值傳遞就是把數據傳遞到另外一個函數中進行進一步處理,以更清楚地顯示函數的表達意思。在函數調用的時候會有數據傳遞,同樣要考慮形參和實參的問題,如下面的一個程序:
public class PassTest
{
float ptValue;
public void changeInt (int value)
{
value = 55;
}
public void changeStr (String value)
{
value = new String ("different");
}
public void changeObjValue (PassTest ref)
{
ref.ptValue = 99f;
}
public static void main (String args[])
{
String str;
intval;
PassTest pt = new PassTest ();
val = 11;
pt.changeInt (val);
System.out.println ("Int value is: " + val);
str = new String ("Hello");
pt.changeStr (str);
System.out.println ("Str value is: " + str);
pt.ptValue = 101f;
pt.changeObjValue (pt);
System.out.println ("Current ptValue is: " + pt.ptValue);
}
}
這個程序最后輸出的結果將是:
11
Hello
99f
開始的11和Hello就是遵循參數傳遞的原則,雖然改變了形參的值,但是實參卻不改變,這同C語言中是一樣的。那么如果想改變函數中的實參的值,那么應該怎么做呢?我們知道,在C語言中,我們可以采用指針變量,用指針變量作為函數的參數,那么這樣,傳遞的就是參數存放的地址,那么在函數中改變同一地址的參數值的時候,就不會發生錯誤,可是,在java中沒有指針的說法,那么,要實現上述C語言的做法,應該怎么處理呢?我們知道,java中處處都是考慮對象的,句柄是用來操作對象的活動的,那么我們如果將對象的句柄傳遞到函數中去,就可以使兩者指向同一個句柄(也就是地址),這樣就可以完成數據的修改了。見上面的程序,我們可以知道,pt是主函數中創建的PassTest的對象,通過傳遞它,就可以完成地址的傳遞,子函數中,ref與主函數的 pt指向的其實是一個內存單元,那么修改ref中的ptValue的值,也就是修改pt中的ptValue的值,即使沒有最后的數據返回,這個數據也是會改變的。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Java如何實現值傳遞”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。