博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
StringBuffer作为参数传递的问题
阅读量:6208 次
发布时间:2019-06-21

本文共 683 字,大约阅读时间需要 2 分钟。

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

变量a\b\x\y中存储的是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类型的所以相当于值传递

转载于:https://www.cnblogs.com/grows/p/6099422.html

你可能感兴趣的文章
day01语法python入门_2
查看>>
杭电oj2047-2049、2051-2053、2056、2058
查看>>
redis memcached MongoDB
查看>>
设计模式(单例)
查看>>
Mysql学习总结(12)——21分钟Mysql入门教程
查看>>
curl 学习
查看>>
.net Json JavaScriptSerializer JsonHelper类
查看>>
json使用
查看>>
python面向对象-1方法、构造函数
查看>>
Struts2入门---常用的OGNL标签的用法
查看>>
《未来世界的幸存者》笔记
查看>>
【java并发编程艺术学习】(一)初衷、感想与笔记目录
查看>>
实现自己的BeanFactory、AOP以及声明式事务
查看>>
大数据新手之路二:安装Flume
查看>>
amazeui学习笔记--css(基本样式3)--文字排版Typography
查看>>
SQLite 数据类型
查看>>
P1977 出租车拼车
查看>>
帝国CMS浅浅滴谈一下——博客园老牛大讲堂
查看>>
day1作业二:多级菜单操作
查看>>
Swing-BoxLayout用法-入门
查看>>