zoukankan      html  css  js  c++  java
  • StringBuffer作为参数传递的问题

    public class Foo {
    2.   public static void main (String [] args)  {
    3.      StringBuffer a = new StringBuffer (“A“);
    4.      StringBuffer b = new StringBuffer (“B“);
    5.     operate (a,b);
    6.     system.out.printIn{a +“ ”+b};
    7. )
    8. static void operate (StringBuffer x, StringBuffer y)  {
    9.           x.append (y);
    10.           y = x;
    11.     }
    12. }

    打印出来是AB B

    因为:AB B
    变量axy中存储的是StringBuffer变量的引用而不是一个StringBuffer对象。根据非基本类型参数传递为引用传递的规则,operate接收的参数只是StringBuffer对象的引用.因此可以理解为x、a都是指向同一个对象;b、y也是指向同一个StringBuffer对象,所以x.append(y)将导致x和a同指的StringBuffer对象改变(增加"B");而y=x只是让变量y改变指向为和x相同的StringBuffer对象,而y原来所指的对象并不会发生任何改变。

    所以StringBuffer是引用传递传递的是地址

    而String 虽然也是对象,但其实final类型的所以相当于值传递

  • 相关阅读:
    JQuery Object vs. DOM element
    创建自己的taglib 并打包入jar
    基于中间件/构件的开发
    如何创建RESTFul Web服务
    企业级API设计
    我的面试库
    架构师在敏捷中是猪还是鸡
    网络安全那点事
    HTML元素定位
    Windows 命令集合
  • 原文地址:https://www.cnblogs.com/rookie-newbie/p/8583826.html
Copyright © 2011-2022 走看看