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

  • 相关阅读:
    关于this的指向问题
    blued面经
    数美(sm)面经
    xue球 面经
    jquery中的$("#id")与document.getElementById("id")的区别
    如何知道iframe文件下载download完成
    前端linux基础
    Vue.js 初级面试题
    React 面试题
    从输入URL到页面加载的过程
  • 原文地址:https://www.cnblogs.com/rookie-newbie/p/8583826.html
Copyright © 2011-2022 走看看