详解java的值传递,地址传递,引用传递

  

<强>详解java的值传递,地址传递,引用传递

  

一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了java中的值传递和地址传递,看完后感受颇深。下边总结下以便更容易理解。
  

  

按照以前的理解,java中基本数据类型是值传递,对象是地址(引用)传递。给大家看个例子:
  

        公开课ObjectTrans {      公共静态void main (String [] args) {   字符串名称=" 123 ";   SChange(名称);   System.out.println(名称);   }      公共静态孔隙SChange (String str) {   str=" 234 ";   }      }   之前      

大家思考下,这个例子输出的结果应该是123呢还是234呢?结果是123.为什么# 63;一句话表达:对象也是值传递,只是把这个对象的引用复制了一份。
  

  

其java本实来就是值传递,没有c++那样的指针传递,分步分析下上边的代码:
  

  

1, name=" 123 "
  

  

2,调用SChange str和名字共同指向“123”(拷贝的名字的引用赋给str)
  

  

3, str重新赋值并指向“234”
  

  

4,名称指向不变还是“123”
  

  

下边看另外一段代码:
  

        公开课ObjectTrans {      公共静态void main (String [] args) {   StringBuilder的名字=new StringBuilder (“123”);   SChange(名称);   System.out.println(名称);   }      公共静态孔隙SChange (StringBuilder str) {//str=" 234 ";   str.append (“234”);   }      }   之前      

那么这段代码输出的结果应该是什么呢?答案是123234,为什么?同样分步分析:
  

  

1, name=" 123 "
  

  

2,调用SChange str和名字共同指向“123”(拷贝的名字的引用赋给str)
  

  

3,改变所指向对象的值“123”+“234”
  

  

4,引用没变只是值变了,所以结果为123234
  

  

如果不明白请留言,自己好好分析下…请记住一句话:java只有值传递。

  

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

详解java的值传递,地址传递,引用传递