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

时间: 2024-08-14 06:51:06

StringBuffer作为参数传递的问题的相关文章

Java API ——StringBuffer类

1.StringBuffer类概述, 1)我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间.而StringBuffer就可以解决这个问题 2)线程安全的可变字符序列 3)StringBuffer和String的区别 · 前者长度和内容可变,后者不可变.  · 如果使用前者做字符串的拼接,不会浪费太多的资源. 2.构造方法 · public StringBuffer() :无参构造方法 · public StringBuffer(int capacity

Java基础知识强化48:StringBuffer类之StringBuffer的三个面试题

1. 面试题:String,StringBuffer,StringBuilder的区别 ? 答:String是字符串内容不可变的,而StringBuffer和StringBuilder是字符串内容长度可变的: StringBuffer是同步的,数据安全,效率低. StringBuilder是不同步的,数据不安全,效率高. 2. 面试题:StringBuffer 和数组的区别? 答:二者都可以看出是一个容器,装其他的数据.但是呢,StringBuffer的数据最终是一个字符串数据,而数组可以放置任

java stringbuffer二

StringBuffer和StringBuilder的区别 * StringBuffer是jdk1.0版本的,是线程安全的,效率低 * StringBuilder是jdk1.5版本的,是线程不安全的,效率高 * String和StringBuffer,StringBuilder的区别 * String是一个不可变的字符序列 * StringBuffer,StringBuilder是可变的字符序列 String和StringBuffer分别作为参数传递形式参数问题 * String作为参数传递 *

String类和StringBuffer类

一.String类 1.String类的获取功能 int length() 获取字符串的长度 char charAt(int index) 通过下标获取字符 int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引. int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引 int indexOf(int ch,int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始. int indexOf(Str

Java笔记(07):常见对象--StringBuffer、二分查找及排序算法

1.StringBuffer类的构造方法 1 package cn.itcast_01; 2 3 /* 4 * 线程安全(多线程讲解) 5 * 安全 -- 同步 -- 数据是安全的 6 * 不安全 -- 不同步 -- 效率高一些 7 * 安全和效率问题是永远困扰我们的问题. 8 * 安全:医院的网站,银行网站 9 * 效率:新闻网站,论坛之类的 10 * 11 * StringBuffer: 12 * 线程安全的可变字符串. 13 * 14 * StringBuffer和String的区别? 1

黑马程序员——Java基础---StringBuffer、Arrays、包装类

--Java培训.Android培训.iOS培训.UI培训.PHP培训.期待与您交流! -- 一.StringBuffer类和StringBuilder类 1. StringBuffer类是线程安全的可变字符序列 2. StringBuffer和String的区别 String是一个不可变的字符序列 StringBuffer是一个可变的字符序列 3.构造方法和方法 StringBuffer的构造方法: public StringBuffer():无参构造方法 public StringBuffe

StringBuffer(StringBuilder)_sort()_Arrays

13.01_常见对象(StringBuffer类的概述) A:StringBuffer类概述 通过JDK提供的API,查看StringBuffer类的说明 线程安全的可变字符序列 B:StringBuffer和String的区别 String是一个不可变的字符序列 StringBuffer是一个可变的字符序列 * 13.02_常见对象(StringBuffer类的构造方法) A:StringBuffer的构造方法: public StringBuffer():无参构造方法,初始容量大小16字节

黑马程序员(Java)----API之常用类(StringBuffer、Integer、Character)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 4.4 StringBuffer 4.4.1 了解StringBuffer SringBuffer:线程安全的可变字符串.跟String相比,使用StringBuffer做字符串的拼接不会浪费太多资源. 4.4.2 构造方法 public StringBuffer():无参构造方法 public StringBuffer(int capacity):指定容量的字符串缓冲区对象 public S

十三、StringBuffer

StringBuffer的含义: StringBuffer是线程安全的可变字符串 String和StringBuffer的区别: A.String的长度和内容是不可改变的,StringBuffer是可变的 B.StringBuffer拼接字符串在常量池中不会浪费过多的空间 StringBuffer的构造方法: public StringBuffer():无参构造方法 public StringBuffer(int capacity):指定容量的字符串缓冲区对象 public StringBuff