值传递和引用传递到底有啥区别啊!百度查过,我也能理解意思。但是要是在程序里面该如何区别值传递和引用传递啊。求大神告诉。
3 回答
已采纳
尧叔
TA贡献77条经验 获得超201个赞
关于Java值传递和引用传递的特性
需要注意的是在方法调用那块传入参数对原值是否修改的问题,
基本类型都是值传递:
public class Boy {
private int size;
private String[] position;
public void addSize(int size) {
size++;
}
public static void main(String[] args) {
Boy me = new Boy();
int mySize = 18;
System.out.println(mySize+"cm");
me.addSize(mySize);
System.out.println(mySize+"cm");
}
}两次输出都是18,因为mySize作为方法参数时,会复制一份值在方法内操作,方法操作mySize时不影响原来的值。
而对象作为方法参数时是引用传递,顾名思义,拷贝了一份引用到方法里面进行操作,两个引用指向的是同一实例,所以修改引用的值会造成原实例的值被修改。
public class Boy {
private int size;
private String[] position;
public void addSize(Boy boy) {
boy.size++;
}
public void setSize(int size) {
this.size = size;
}
public int getSize() {
return size;
}
public static void main(String[] args) {
Boy me = new Boy();
me.setSize(18);
System.out.println(me.getSize()+"cm");//18cm
//这里me作为方法参数时传递的是引用,指向的同一对象。
me.addSize(me);
System.out.println(me.getSize()+"cm");//19cm
}
}
onemoo
TA贡献883条经验 获得超454个赞
看到你是在 Java 区中提问的,我不知道你是不是会错意了。因为:Java 中 method 传参是值传递,Java 没有引用传递。
C 语言中也只有传值,C++ 中是有传值和传引用两种方式...
添加回答
举报
0/150
提交
取消
