首頁 > Java > java教程 > 主體

14.Java 基礎 - 參數傳遞

黄舟
發布: 2017-02-27 10:55:09
原創
1013 人瀏覽過

基本概念

在Java 中,參數傳遞機制有兩種:傳值、傳址。

  • 基本型別作為參數傳遞時,是傳遞值的拷貝,無論你怎麼改變這個拷貝,原值是不會改變的;屬於傳值。

  • 物件作為參數傳遞,是把物件在記憶體中的位址拷貝了一份傳給了參數;屬於傳址。


實例探究

#1.基本類型作為參數傳遞

public static void main(String[] args) {    int n =3; // ①

    System.out.println(n); // 3

    chageData(n); // ②

    System.out.println(n); // 3}public static void chageData(int num){
        num = 10; // ③}
登入後複製

觀察輸出結果,發現n 的值並沒有改變。

因為 n,num 都是基本型,所以值就直接保存在變數中。

流程圖如下(對應程式碼中的①②③):

14.Java 基礎 - 參數傳遞


2.物件作為參數傳遞

14.Java 基礎 - 參數傳遞


14.Java 基礎 - 參數傳遞



############################################################################################################################ ###首先來看String 的例子:###
public static void main(String[] args) {
    String str = "hello"; // ①
    System.out.println(str); // hello

    chageData(str); //②

    System.out.println(str); // hello}public static void chageData(String s){
    s ="world"; // ③}
登入後複製
###觀察結果,發現str 並沒有改變。這裡結合流程圖來做下分析:############在① 執行完後,就會在堆中產生一個物件引用str,裡面存放的是位址索引,該位址指向記憶體中真正的String 物件############在② 產生了物件引用s ,透過傳址引用,它也得到了「hello」的位址索引。 ############在 ③ 對物件引用 s 重新賦值。照理說應該是物件的值從 “hello” -> “world”。但它卻創造了一個的新的對象,原因就在於 String 的不可變性,因為一旦 String 改變就建立新的物件。 ########################再來看StringBuffer 的例子:###
public static void main(String[] args) {
    StringBuffer stb = new StringBuffer("hello"); // ①
    System.out.println(stb); // hello

    chageData(stb); // ②

    System.out.println(stb); // hello world}public static void chageData(StringBuffer s){
    s.append("world"); // ③}
}
登入後複製
###觀察結果,發現stb 發生了改變,因為StringBuffer 物件是可變的,改變它的內容不會創造出新的物件############### 以上就是14.Java 基礎- 參數傳遞的內容,更多相關內容請關注PHP中文網(www.php.cn)! ################
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!