今天在群里看到有人说面试的时候被问值传递和引用传递的区别
我就写了一些代码用于却别一下。
简单的说,值传递相当于对形参赋值
如果我们有一个
变量int B=5
还有一个方法a(int BB)
此时如果A(B)
在方法a中不管你对B做什么,比如B=B+1,其原始的变量B仍然是5。
因为此时时机参数和形参他们在内存的地址是不一样的,所以我们在方法里面打印出的B=6,而在方法外面打印出B的值却仍然是5.
引用传递,既是传递的地址,因此你在方法内对变量做出的更改,在方法外对实际的变量也同样做出了更改。
[caption id="attachment_84" align="alignnone" width="372"]
值传递与引用传递[/caption]
以下为我自己写的代码,仅供参考
主类
public class ChuanDi {
public static void main(String[] args) {
int A=5;
char[] ch={'a','b','c','d'};
ChuanDiLei cdl=new ChuanDiLei();
System.out.println("实际参数A的值="+A);
cdl.A(A);
String str=String.valueOf(ch); //需要将字符数组转化为String类型才可直接打印出
System.out.println("实际参ch的值是="+str);
cdl.B(ch);
}
}
子类
public class ChuanDiLei {
void A(int a){
a=a+1;
System.out.println("类中a被改变的值a=a+1,是:"+a);
}
void B(char[] ch){
if(ch.length>2) //例子,用于判断数组长度
ch[1]='q';
String str=String.valueOf(ch);
System.out.println("新的ch的值是:"+str);
}
}

爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情