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;
    }
}

 

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