public class Test { public static void main(String[] args) {
int [] arry = {9,5,40,6,2,3};
bubble(arry); //为什么不这么写arry = bubble(arry);

for (int i = 0; i < arry.length; i++) {
System.out.println(arry[i]);
}
} private static int[] bubble(int[] arry) {
 for(int i =arry.length; i>1; i--) {
 for(int j=0; j<i-1; j++) {
 if (arry[j] > arry[j+1]) {
 int temp = arry[j];
 arry[j] = arry[j+1];
 arry[j+1] = temp;
 }
 }
 }
 return arry;
}}----------------
不理解为什么arry = bubble(arry)和bubble(arry)的效果一样

解决方案 »

  1.   

    java中不向c一样传送的是变量值,传送的是变量的应用,当引用发生改变时,对应的值夜就变了。
    你的arry传进去后改变的就是arry所指向的变量,所以就不用赋值了。
      

  2.   

    这个很简单啊,通过bubble将arry的值更改了,将更改的结果作为返回值
    如果bubble(arry)直接就可以更改值,因为通过bubble将arry指向的数组值改变了
    如果arry=bubble(arry)将更改返回值赋值了一次,效果一样
      

  3.   

    我觉得是因为这里主函数里的arry和方法里的arry都是整型数组的缘故
    传递的是引用
    bubble(arry)虽然不能获得返回值,但是已经改变了数组首地址的引用,故效果一样