java中的参数传递(值传递等)

java中参数的传递规则,经常会让初学者一头雾水,这里分析一下java中的两种基本传递方式。

不想看过程的,可以直接看文章末尾结论。

(在看参数传递规则之前,一定要保证自己已经充分理解了形参和实参的概念,否则在下边的学习,可能会更加懵圈。)

1.基本数据类型的传递规则。

首先看一段代码:

public class CompareTwo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		temp(a,b);
		System.out.println("output in main method: "+a);
		System.out.println("output in main method: "+b);
	}

	public static void temp(int a,int b){
		int temp = a;
		a = b;
		b = temp;
		
		System.out.println("output in temp method: "+a);
		System.out.println("output in temp method: "+b);
	}
}

运行结果:

output in temp method: 20
output in temp method: 10
output in main method: 10
output in main method: 20

从上边代码和运行结果可以看出,在方法中参数a和b发生了交换,但是事实上,这两个变量都没有发生变化。这是为什么呢?

这里就需要知道基本数据类型作为参数时候的传递规则了。当基本数据类型作为参数的时候,其实只是传递过去了自己的值的副本,也就是说,无论你在方法中如何操作,操作的都是他本身值的副本,所以不管你是如何操作的,最终都不会影响到基本数据类型他的真身。

这里可能就会有人问,那怎样才能操作他的真身呢?其实很简单,本篇文章讲的只是说,基本数据类型作为方法的参数的时候传递的副本,所以要想直接操作他的真身,那就是直接操作这个基本数据类型,而不是将其作为方法的参数,在方法内部改变他。让基本数据类型作为方法的参数,然后在方法中操作这个参数,不可能对真身产生任何影响。

2.引用数据类型的传递规则

首先看一段代码

public class Compare {
	public static void main(String[] args) {
		int[] b={2,5,6};
		temp(b);
		System.out.println(b[0]);
	}

	public static void temp(int[] a){
		a[0] = 100;
	}
}


 

运行结果:

100



可以看出来,引用数据类型作为参数时,能够操作其真实的自己。原理如图:(这里的a代表的是实参,b代表的形参,此图仅仅是为了说明传递规则,切勿做更多的解读。)







因此可以看出引用数据类型作为方法的参数时,是地址传递,对参数的操作能够直接影响他的真实的值。

3.结论

基本数据类型作为参数时,传递的仅仅是自己的一个副本,因此在方法中对参数的操作,不能影响原来的值。

引用数据类型作为参数时,传递的是自己的引用地址,因此在方法中对参数的操作,能够影响原来的值。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值