猿问

值传递和引用传递到底有啥区别啊!

值传递和引用传递到底有啥区别啊!

百度查过,我也能理解意思。但是要是在程序里面该如何区别值传递和引用传递啊。

求大神告诉。

BlessingLee
浏览 1588回答 3
3回答

尧叔

关于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

看到你是在 Java 区中提问的,我不知道你是不是会错意了。因为:Java 中 method 传参是值传递,Java 没有引用传递。C 语言中也只有传值,C++ 中是有传值和传引用两种方式...

肥冰

值传递只出现在八大基础类型 直接用=就是值传递,如果是对应的包装类作为参数传递时候也是值传递.剩下对象之间都是通过引用传递.
随时随地看视频慕课网APP

相关分类

Java
我要回答