`
talentluke
  • 浏览: 592216 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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;    

   

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics