Java中的參數傳遞:都是值傳遞!沒有引用傳遞!!

本文介紹Java中三種不同類型的值傳遞,達到對Java值傳遞的深刻認識

一、參數傳遞的是基本數據類型(8種)

1.問題

    public static void main(String[] args) {
        int a = 1;
        Demo01_ParamTest pt = new Demo01_ParamTest();
        //對於原生數據類型來說(8種基本數據類型),參數傳遞的時候是值傳遞,也就是a的一份拷貝
        //
        pt.changeInt(a);
        System.out.println(a);
    }
    public void changeInt(int a){
        a = 3;
    }

2.分析

  • 當調用pt.changeInt(a);,這裏是把 main中的a拷貝了一份傳遞給changeInt(int a)a,注意這是兩個不同的a,在函數內部的改變,並不會影響maina的值
  • 所以最後輸出1

二 參數傳遞的不是基本數據類型

1.問題

class Point{
    int x;
    int y;
    public Point(int x, int y){
        this.x = x;
        this.y = y;
    }
}
public class Demo02_ParamTest {

    public static void main(String[] args) {
        Point point = new Point(1, 2);
        Demo02_ParamTest pt = new Demo02_ParamTest();
        pt.changePoint(point);
        System.out.println(point.x);
        System.out.println(point.y);

    }
    public void changePoint(Point point){
        point.x = 5;
        point.y = 6;
    }
}

2.分析

在這裏插入圖片描述

  • 所以最後輸出爲5,6

三、參數傳遞的是String對象

1.問題

    public static void main(String[] args) {

        String str = "xyz";
        Demo03_ParamTest pt = new Demo03_ParamTest();
        pt.changeString(str);
        System.out.println(str);

    }

    public void changeString(String str){
        str = "abc";
    }

2.分析

同樣的分析方法

在這裏插入圖片描述

  • 所以最後輸出"xyz"

四、小結

  • Java中的參數傳遞都是值傳遞
  • 對於基本數據類型來說值傳遞就是值本身的拷貝
  • 對於引用數據類型來說值傳遞就是引用的拷貝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章