java基礎,java只有值傳遞

package com.zhong;

/**
 * java只有值傳遞
 */
public class JavaPassByValue {

    public static void main(String[] args) {

        int num1 = 10;
        int num2 = 20;
        //1。一個方法不能修改一個基本數據類型的參數(即數值型或布爾型》的值
        swap(num1, num2);
        System.out.println("num1 = " + num1); //num1 =  10
        System.out.println("num2 = " + num2); //num2 =  20

        int[] arr = {1, 2, 3};
        System.out.println(arr[0]);
        //2.一個方法可以改變一個對象實參的狀態。
        change(arr);
        System.out.println(arr[0]); // 0


        Student s1 = new Student("小張");
        Student s2 = new Student("小李");
        //3.一個方法不能讓對象實參引用一個新的對象。
        swap(s1, s2);
        System.out.println("s1:" + s1.getName()); //小張
        System.out.println("s2:" + s2.getName()); //小李
    }

    /**
     * 交換基本類型實參的值:不可以
     *
     * @param a
     * @param b
     */
    public static void swap(int a, int b) {
        int temp = a;
        a = b;
        b = temp;
        System.out.println("a = " + a);
        System.out.println("b = " + b);

    }

    /**
     * 改變對象中的屬性值:可以
     *
     * @param array
     */
    public static void change(int[] array) {
        if (array == null) {
            throw new RuntimeException("array 不合法");
        }
        array[0] = 0;
    }


    /**
     * 交換對象實參的引用:不可以
     *
     * @param x
     * @param y
     */
    public static void swap(Student x, Student y) {

        Student temp = x;
        x = y;
        y = temp;

        System.out.println("x:" + x.getName());
        System.out.println("y:" + y.getName());
    }
}

class Student {
    String name;

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章