Java方法参数详解

在介绍Java的传递方式之前先看以下代码

public static void main(String[] args) {
		int n=10;
		int m=20;		
		exchange(n,m);
		System.out.println("n="+n);
		System.out.println("m="+m);
}
public static void exchange(int a,int b) {
		int temp=a;
		a=b;
		b=temp;
		//下面是程序运行结果
		 n=10
		 m=20`。
}

这是因为Java时是按值调用在进行参数传递。在exchange方法种a,b值是拷贝的n,m的值。在经过互换之后,随着函数的结束 ,a,b随之被内存回收。而n,m的值并没有发生任何改变。从中不难看出Java在进行方法调用的时候不会改变原参数。

再看下面的代码

		public static void main(String[] args) {
			int []i= {1,3};
			int []j= {2,4};
			exchange(i,j);
			System.out.println(Arrays.toString(i));
			System.out.println(Arrays.toString(j));
	}
		public static void exchange(int []a,int []b) {
			int []temp=a;
			a=b;
			b=temp;
	}
	//下面是程序运行结果
	[1, 3]
	[2, 4]
	

同样的数组i和j的值并没有发生任何变化。下面对代码进行分析。
数组 i 记录的信息只有它的首地址和长度。i指向的是{1,3}中“1”的地址。在exchange中int[]a和int[]b中传递的值是地址信息。通过转换之后a,b中的信息进行了转换。但是在函数结束之后a,b。又被内存回收了。a,b发生的变化完全作用不到数组i,j。
我们在exchange中加入如下代码

		System.out.println(Arrays.toString(a));
		System.out.println(Arrays.toString(b));

会发现在exchange中a,b的值发生了互换。这就证明了Java中一个方法不会对原参数的值发生改变。

通过这两个例子我们不难发现在方法结束的时候a,b都会被舍弃。这说明Java语言对对象采用的不是引用调用,而是按值传递的。
下面是Jav中方法参数的使用情况

  • 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)
  • 一个方法可以改弊哪一个对象参数的状态
  • 一个方法不能让对象参数引用一个新的对象。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值