为了账号安全,请及时绑定邮箱和手机立即绑定

关于java引用传递的问题

关于java引用传递的问题

临摹微笑 2018-07-01 10:07:50
请问为什么在第一个程序中可以出现输出不同值,但是第二个程序不行?class Ref1{     int temp=10; } public class ClassDemo05 {    public static void main(String[] args) {    Ref1 ref1=new Ref1();    ref1.temp=20;    System.out.println(ref1.temp);    tell(ref1);    System.out.println(ref1.temp);    }            public  static void tell(Ref1 ref2) {    ref2.temp=30;    } }         public class ClassDemo07 {    public static void main(String[] args) {        int a=10;    System.out.println(a);        tell(a);    System.out.println(a);    }    public static void tell(int b) {        b =30;    } }
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

第一个程序输出两个值ref1.temp = 20;,然后tell(ref1);tell方法改变了ref1的temp值为30,所以是2个值

通过建立内部元素的方法,完成了外部元素调用内部元素,且将外部元素全局化

说白了,ref1在main中是有效的,ref1的temp也是有效的,把ref1传给tell,tell修改ref1.temp是可以直接改的,传给tell的是个指针,修改的是指针下面的内存值

第二个元素改变的是局部变量,传递过去以后是个指针,然后指针的值被复制后用了,所以对外部没有产生影响


查看完整回答
反对 回复 2018-07-13
?
喵喔喔

TA贡献1735条经验 获得超5个赞

SOGA

查看完整回答
反对 回复 2018-07-13
  • 2 回答
  • 0 关注
  • 332 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信