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同学买了一篮水果,但是回来后发现水果有坏的,于是他拿去换,人家把水果给换了,但是篮还是他之前的那个篮。(引用传递)
可能例子不是很恰当,但是能说明问题。
以上部分内容来自网络,有问题可以在下面评论,技术问题可以私聊我。