数组的引用传递

本章目标
掌握数组的引用传递
可以使用方法接收或返回一个数组
了解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、
 * */
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值