A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class bubbleSort {
        public static void bubble(int [] arr){   //<--这个被调用的函数中的数组值是怎么传到主函数中去的?
                for(int x=0;x<arr.length-1;x++){     //不是说void类型的函数没有返回值吗?
                        for(int y=0;y<arr.length-x-1;y++){
                                if(arr[y]>arr[y+1])
                                {
                                        int temp=arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y+1]=temp;
                                }
                        }
                }
               
        }
        public static void printArray(int [] array){
                System.out.print("[");
                for(int x=0;x<array.length;x++){
                        if(array[x]!=array[array.length-1])
                                System.out.print(array[x]+",");
                        else
                                System.out.println(array[x]+"]");
                }
        }
public static void main(String args[]){
        int [] arr={4,7,5,9,4,2,1};
        printArray(arr);
        bubble(arr);
        printArray(arr);
}
}

2 个回复

倒序浏览
你这里面跟返回值没有任何关系,是关于调用函数时 传值和传址的问题。
显然你的public static void bubble(int [] arr) 函数的参数是一个int型的数组(相当于指针),在调用该函数时需要传递一个int型数组的地址,意思就是让arr指向一个int型数组,而函数内部对arr指向的数组改变其中的值时,那么这个数组中的值就确确实实的改变了
回复 使用道具 举报
palysh 发表于 2015-7-7 23:11
你这里面跟返回值没有任何关系,是关于调用函数时 传值和传址的问题。
显然你的public static void bubble( ...

似乎明白了,感谢大神
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马