在java中,所有对象都是通过引用进行操作的。而数组也是一种对象,当把数组作为参数传递给方法时,传递的实际上就是数组对象的引用。在方法中对数组的所有操作,都会映射到原数组中,这也是java面向对象的一个重要特征。而所谓的"引用",就是java对象在堆内存的地址赋给了多个"栈内存"的变量。
public class ArrayReturn { public static int[] sort(int[] arr){ //冒泡排序算法 for(int i = 0;i < arr.length;i++){ for(int j = i+1;j< arr.length;j++){ if(arr[i] < arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; } public static void printArr(int[] arr,String msg){ System.out.println(msg); for(int i : arr){ System.out.print(i+" "); } System.out.println(); } public static void main(String[] args) { int[] arr = {3,12,7,8,70,36,41}; int[] arrnew;//声明一个新数组引用(别名) printArr(arr,"排序前:"); arrnew = sort(arr);//把数组作为参数传递给方法时,传递的实际上就是该数组对象的引用。 printArr(arrnew,"排序后:"); } }