Java里边什么是值传递和引用传递?两个有什么区别

学过java基础的人都知道,在java中参数的传递过程中有值传递和应用传递,那么这两个到底有什么区别呢,下面我通过例子为大家详细的介绍下。

我们都知道Java中有八种数据类型,基础数据类型分别是:byte,short,int,long,float,double,char,boolean,引用数据类型分别是:数组,类和接口。方法传参的时候我们有两种,一种是形式参数(定义方法时写的参数),一种是实际参数(调用方法时给的具体值)。

首先我们通过一个例子说明值传递

static int data = 200;
public static void main(String[] args) {
	modifyValue(data);
	System.out.println(data);
}
	
public static void modifyValue(int data) {
	data = 100;
}

运行以上代码你会发现data还是200,这是为什么呢,这是因为int是基本的数据类型,属于值传递

下面我来看什么是引用传递

	static int[] arrNum = {1,2,3,4,5};
	public static void main(String[] args) {
		modifyArrValue(arrNum);
		for(int i=0;i<arrNum.length;i++) {
			System.out.println(arrNum[i]);
		}
	}
	
	public static void modifyArrValue(int[] arrNum) {
		for(int i=0;i<arrNum.length;i++) {
			arrNum[i] = 0;
		}
	}
	

我们来看结果是4个0,是不是很意外,因为这个地方是引用类型的。

可能看了上面的例子之后有的同学还是不理解什么是值传递,什么是引用传递。我给大家举个非常简单的例子:

A同学买了一篮水果,但是回来后发现水果有坏的,于是他拿去人家给他重新换了一栏。 (值传递)

A同学买了一篮水果,但是回来后发现水果有坏的,于是他拿去换,人家把水果给换了,但是篮还是他之前的那个篮。(引用传递)

可能例子不是很恰当,但是能说明问题。

以上部分内容来自网络,有问题可以在下面评论,技术问题可以私聊我。

 

posted @ 2019-03-18 14:39  坐看云起时_雨宣  阅读(1072)  评论(0编辑  收藏  举报