本章目标
掌握数组的引用传递
可以使用方法接收或返回一个数组
了解Java对数组操作的支持
传递及返回数组
之前的方法操作传递和返回的都是基本数据类型,但是方法中也可用来传递和返回数组。如果要向方法中传递一个数组,则方法的接收参数处必须是符合其类型的数组。而且数组属于引用数据类型,所以在把数组传递进方法之后,如果方法对数组本身做了任何修改,修改结果都是会保存下来的。
向方法中传递数组
public class ArrayRefDemo01 {
public static void main(String[] args) {
int temp[] = {1,3,5};//使用静态初始化定义数组
fun(temp);//传递数组引用
for(int i=0; i<temp.length; i++){//循环输出
System.out.print(temp[i]+"、");
}
}
public static void fun(int x[]){//接收整型数组引用
x[0] = 6;//修改第1个元素的内容
}
/*结果:
* 6、3、5、
* */
}
内存状态
使用方法返回一个数组
既然方法可以接收一个数组,那么方法也就可以返回一个数组,则此时,只需要在返回值类型声明处明确的写出返回的数组类型即可
public class ArrayRefDemo02 {
public static void main(String[] args) {
int temp[] = fun();//通过方法实例化数组
print(temp);//向 print() 方法中传递数组
}
public static void print(int x[]){//接收数组
for(int i=0; i<x.length; i++){//循环输出
System.out.print(x[i]+"、");
}
}
public static int[] fun(){//定义一个数组
int ss[] = {1,3,5,7,9,};//返回数组
return ss;
}
/*结果:
* 1、3、5、7、9、
* */
}
范例:数组排序
public class ArrayRefDemo03 {
public static void main(String[] args) {
int score[]={67,89,87,69,90,100,75,90};//定义整型数组
int age[]={31,30,18,17,8,9,1,39};//定义整型数组
sort(score);//数组排序
print(score);//数组打印
System.out.println("\n----------------------------------------------");
sort(age);//数组排序
print(age);//数组打印
}
public static void sort(int temp[]){//数组排序
for(int i=1; i<temp.length; i++){//使用冒泡算法排序
for(int j=0; j<temp.length; j++){
if(temp[i]<temp[j]){
int x=temp[i];//交换位置操作
temp[i]=temp[j];
temp[j]=x;
}
}
}
}
public static void print(int temp[]){//输出数组内容
for(int i =0; i<temp.length; i++){
System.out.print(temp[i]+"、");
}
}
/*结果:
* 67、69、75、87、89、90、90、100、
* ----------------------------------------------
* 1、8、9、17、18、30、31、39、
* */
}
引用传递
使用Java类库完成数组的排序操作
public class ArrayRefDemo04 {
public static void main(String[] args) {
int score[]={67,89,87,69,90,100,75,90};//定义整型数组
int age[]={31,30,18,17,8,9,1,39};//定义整型数组
java.util.Arrays.sort(score);//使用 Java 提供的排序操作
print(score);//输出数组
System.out.println("\n----------------------------------------------");
java.util.Arrays.sort(age);//使用 Java 提供的排序操作
print(age);
}
public static void print(int temp[]){//数组输出
for(int i =0; i<temp.length; i++){
System.out.print(temp[i]+"、");
}
}
/*结果:
* 67、69、75、87、89、90、90、100、
* ----------------------------------------------
* 1、8、9、17、18、30、31、39、
* */
}
范例:数组拷贝
给定两个数组,可以将其中一个数组的指定位置的内容拷贝另外一个数组。如果要想完成以上的要求,则可以使用方法,在方法中接收五个参数:“源数组名称、源数组开始点、目标数组名称、目标数组开始点、拷贝长度”,则按照以上的思路完成代码。
范例:数组拷贝 —— 代码实现
public class ArrayCopyDemo01 {
public static void main(String[] args) {
int i1[]={1,2,3,4,5,6,7,8,9};//源数组
int i2[]={11,22,33,44,55,66,77,88,99};//目标数组
copy(i1,3,i2,1,3);//调用复制方法
print(i2);//输出数组
}
//参数含义:源数组名称、源数组开始点、目标数组名称、目标数组开始点、复制长度
public static void copy(int s[], int s1, int o[],int s2, int len){
for(int i=0; i<len; i++){
o[s2+i]=s[s1+i];//修改目标数组内容
}
}
public static void print(int temp[]){//数组输出
for(int i=0; i<temp.length; i++){
System.out.print(temp[i]+"、");
}
}
/*结果:
* 11、4、5、6、55、66、77、88、99、
* */
}
使用Java类库中的方法完成数组拷贝操作
public class ArrayCopyDemo02 {
public static void main(String[] args) {
int i1[]={1,2,3,4,5,6,7,8,9};//源数组
int i2[]={11,22,33,44,55,66,77,88,99};//目标数组
System.arraycopy(i1, 3, i2, 1, 3);//Java 对数组复制的支持
print(i2);
}
public static void print(int temp[]){//数组输出
for(int i=0; i<temp.length; i++){
System.out.print(temp[i]+"、");
}
}
/*结果:
* 11、4、5、6、55、66、77、88、99、
* */
}