• 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类型的所以相当于值传递

  • 相关阅读:
    js 实现图片上传
    关于IOS不能使用JQUERY的ON事件
    js实现复制
    订单列表倒计时
    小程序实现倒计时
    微信小程序服务消息推送
    python爬虫七
    python爬虫六
    python爬虫五
    python爬虫四
  • 原文地址:https://www.cnblogs.com/rookie-newbie/p/8583826.html
Copyright © 2020-2023  润新知