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