【Java笔记】数组传递给方法

数组传递给方法

数组的复制

在说数组传递给方法之前先扯一下数组的复制。一开始想进行数组的复制时,我丝毫没有犹豫的使用了赋值语句。

array1 = array2;

这样做 array1 的值的确和 array2 的内容一样了,但这并没有把 array2 的内容复制给 array1(这句话好绕啊)。

Java 中,可以使用赋值语句来复制基本数据类型的变量,但不能复制数组。将一个数组变量赋值给另一个数组变量,实际上是将一个数组的引用赋值给另一个数组。例如上面那条语句,实际上是将 array2 的引用值复制给了 array1,此时 array1 也指向了 array2 的内容,这样就没有指向原先 array1 的内容的了,原先 array1 的内容也无法引用了,就变成了垃圾,java 虚拟机将会自动收回。并且改变 array1 或 array2 任意一个的内容,两者的内容都会发生改变,因为它们是指向内存中同一个地方的。

所以如果要进行数组的复制的话据我所知有三种方法:

  1. 使用循环语句逐个复制数组的元素。
  2. 使用 System 类中的静态方法 arraycopy。
  3. 使用 clone 方法复制数组。

数组传递给方法

和上面用赋值语句复制数组一样,数组传递给方法的也是数组的引用值。

所以和传递基本数据类型的变量不同,方法中对数组进行的修改在方法结束后这些修改还是保留的,因为方法中的数组和方法外的那个数组指向内存中同一块地方。下面的代码就很好的体现了这一特点。


public class Test {

	public static void main(String[] args) {
		
		int a = 1, b = 2;
		int[] array = {1, 2};
		
		System.out.println("before swapInt");
		System.out.println("a = " + a + "\tb = " + b);
		swapInt(a, b);
		System.out.println("after swapInt");
		System.out.println("a = " + a + "\tb = " + b);
		
		System.out.println("\nbefore swapElement");
		System.out.println("array is {" + array[0] + ", " + array[1] + "}");
		swapElement(array);
		System.out.println("after swapElement");
		System.out.println("array is {" + array[0] + ", " + array[1] + "}");
		
	}
	
	public static void swapInt(int a, int b) {
		
		int temp = a;
		a = b;
		b = temp;
		
	}
	
	public static void swapElement(int[] array) {
		
		int temp = array[0];
		array[0] = array[1];
		array[1] = temp;
		
	}
}

输出结果为

before swapInt
a = 1 b = 2
after swapInt
a = 1 b = 2

before swapElement
array is {1, 2}
after swapElement
array is {2, 1}

可见数组传递给方法的是数组的引用值

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值