基本数据类型
public class ParameterDemo1 { public static void main(String[] args) { int x = 10; System.out.println("main方法前,x="+x); change(x); System.out.println("main方法后,x="+x); } static void change(int x) { System.out.println("change方法前,x="+x); x = 50; System.out.println("chagnge方法后,x="+x); } }
引用数据类型
public class ParameterDemo2 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = new int[]{10,99}; printArray(arr); System.out.println(); swap(arr); printArray(arr); //[99,10] } static void swap(int[] arr) { int temp = arr[0]; arr[0] = arr[arr.length - 1]; arr[arr.length - 1] = temp; } static void printArray(int[] arr) { if(arr == null) { System.out.println("null"); return; //结束方法 } for(int index = 0;index < arr.length;index++) { System.out.println(arr[index]); } } }
引用数据类型中两个方法(main和swap)操作的是同一块内存空间(堆空间),而在基本数据类型中操作的是各自的栈帧。
无论是基本数据类型还是引用数据类型,都用的是值传递机制,在基本数据类型中传递的是值的副本,而在引用数据类型中传递的是引用地址值的副本。