值传递和引用传递到底有啥区别啊!百度查过,我也能理解意思。但是要是在程序里面该如何区别值传递和引用传递啊。求大神告诉。
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
提交
取消