java传参是传值还是传引用

个人觉得java是传值,当参数类型是基本类型,复制的是值,而当参数是引用类型时,复制的也是值,只不过这个值是地址。如下例调用change(A a)有几个过程:

(1)创建一个临时变量

(2)将实参的值复制给临时变量,由于是引用变量,实参的值是一个地址,故存的也是同一个地址

(3)方法中改变了临时变量所指向的地址,而实参指向的地址没变

 

change(String str)同理,改变的是临时变量所指向的地址,实参指向的地址没变。

 

public Demo

{

   public static void main(String[] args)

    {

        A a = new A();

System.out.println(a.x);//10

change(a);

System.out.println(a.x);//依然是10

 

   }

   public static void change(A a)

    {

a = new A();

a.x = 20;

    }

   public static void change(String str)

    {

str = "new string value in string pool";

        //str = new String("new string in heap");

    }

}

 

class A

{

    public int x = 10;    

   

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值