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

  • 相关阅读:
    mysql时间日期的加、减
    IDEA 下的svn检出maven代码
    IDEA中如何显示和关闭工具栏、目录栏
    Idea集成使用SVN教程
    Python PEP8 代码规范常见问题及解决方法
    Word文档中手写签名操作说明
    19.名称空间和作用域
    18.函数的参数
    17.文件处理
    16.字符编码
  • 原文地址:https://www.cnblogs.com/rookie-newbie/p/8583826.html
Copyright © 2011-2022 走看看