1. 程式人生 > >Java -暫時無法解釋的現象

Java -暫時無法解釋的現象

Java 給方法傳入不同的引數型別(引數本身抑或是引數的成員變數)會不會改變本身的引數的值?

public class Main {
 
	private static void getMiddleOne(boolean b, Boolean boo, Boolean[] arr){
		b = true;  //形參,不會改變原有值
		boo = new Boolean(true);  //引用變數的直接操作相當於值傳遞,不會改變原來的引用變數
		arr[0] = true;  //引用變數的屬性的操作,會改變原有引用的屬性,相當於傳址呼叫
	}
	
	//測試
	public static void main(String[] args) {
		boolean b = false;
		Boolean boo = new Boolean(false);
		Boolean[] arr = new Boolean[]{false};
 
		getMiddleOne(b, boo, arr);
		
		System.out.println(b);  
		System.out.println(boo.toString());
		System.out.println(arr[0]);
 
		/**
		 * output:
		 * 		false
		 * 		false
		 *		true
		 */
	}
}