源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-12-17 09:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:详解java的值传递、地址传递、引用传递
[b]详解java的值传递、地址传递、引用传递[/b] 一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了java中的值传递和地址传递,看完后感受颇深。下边总结下以便更容易理解。 按照以前的理解,java中基本数据类型是值传递,对象是地址(引用)传递。给大家看个例子:
public class ObjectTrans { 
   
  public static void main(String[] args) { 
    String name = "123"; 
    SChange(name); 
    System.out.println(name); 
  } 
     
  public static void SChange (String str) {   
    str = "234"; 
  }  
   
}
大家思考下,这个例子输出的结果应该是123呢还是234呢?结果是123。why?一句话表达:对象也是值传递,只是把这个对象的引用copy了一份。 其实java本来就是值传递,没有c++那样的指针传递,分步分析下上边的代码: 1、name = "123" 2、调用SChange  str 和 name 共同指向 “123”(拷贝name的引用赋给str) 3、str 重新赋值并指向“234” 4、name指向不变还是“123” 下边看另外一段代码:
public class ObjectTrans { 
   
  public static void main(String[] args) { 
    StringBuilder name = new StringBuilder("123"); 
    SChange(name); 
    System.out.println(name); 
  } 
     
  public static void SChange (StringBuilder str) {   
    //str = "234"; 
    str.append("234"); 
  }  
   
}
那么这段代码输出的结果应该是什么呢?答案是123234,why?同样分步分析: 1、name = "123" 2、调用SChange  str 和 name 共同指向 “123”(拷贝name的引用赋给str) 3、改变所指向对象的值"123"+"234" 4、引用没变只是值变了,所以结果为123234 如果不明白请留言,自己好好分析下。。。请记住一句话:java只有值传递。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部