stringbuffer-结果为什么不是//AB,AB

问题描述

结果为什么不是//AB,AB

public class Foo {
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operator(a,b);
System.out.println(a+","+b);
}
public static void operator(StringBuffer x,StringBuffer y){
x.append(y);
y=x;
}
}

解决方案

实参中的a b假设指向了buf1 buf2两个对象
调用函数,相当于用x y指向buf1 buf2(x=a y=b,但是x y和a b是两套)
现在让x指向y也就是buf1,但是原来的a b还是没有改变指向。

解决方案二:

y=x;改变了y的引用,但是不会作用到实参上。
正确的写法是
x.append(y);
y.setLength(0);
y.append(x.toString())

解决方案三:

y=x试图重新设置y这个引用变量指向地址(即指向a的地址),但不会成功。因为java方法参数都是传值调用,在方法中对于参数值的修改并不会实际修改外部相应的变量,也即是说operator(a,b)之后,b引用变量中的值(即new StringBuffer("B")对象的地址)并没有改变,因此System.out.println(a+","+b);打印的结果应该是:AB,B

解决方案四:

我有点不太明白,为什么a的值改变了,b的值没有改变呢,能不能麻烦再解释一下,什么是传值调用?

时间: 2024-11-02 05:07:00

stringbuffer-结果为什么不是//AB,AB的相关文章

Web压力测试工具:http_load、webbench、ab、Siege使用方法_服务器其它

前言:常在网络飘,哪有不挨刀?做网站的站长说不准哪天得罪了XX人,二话不说直接操着DDOS就上来搞你了,黑不了你,哥就D死你,遇到这样的无赖,还真没办法,因此经常性的给自己的网站做做压力测试,看看服务器的承载能力是很有必要的一件事. 一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 下载地址:h

使用ab和wrk对OSS进行benchmark测试

背景 随着应用OSS的用户越来越多,很多人都想知道,OSS能提供的性能是什么. 这里的性能主要指的是每秒能处理的请求次数(QPS),以及每次请求处理的时延(Latency). 该如何对OSS进行性能测试,这是一个很广泛的话题. 从用户的角度来看,OSS能提供的性能和请求的压力类型(同步,异步),请求Object的大小,请求的方式(读,写)都是有关系的. 从OSS服务端的角度,对外提供的性能和自身的机器型号(磁盘,网卡,内存,CPU),机器数量,整个集群的网络,负载都有关系. 使用范围 本文讲的是

$A,B$ 实对称 $\ra\tr((AB)^2)\leq \tr(A^2B^2)$

设 $A,B$ 是 $n$ 阶实对称矩阵. 试证: $\tr((AB)^2)\leq \tr(A^2B^2)$. 又问: 等号何时成立?     证明:  由  $$\bex  \sum_i \sez{\sum_j a_{ij}b_{ji}}=\sum_j\sez{\sum_i b_{ji}a_{ij}}  \eex$$  知  $$\bee\label{130912:1}  \tr(AB)=\tr(BA).  \eee$$  对 $A,B\in M_n(\bbR)$, 定义  $$\bex  

Java 正则表达式学习总结和一些小例子_javascript技巧

从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理, 如匹配,搜索,提取和分析结构化内容. java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher. Pattern是一个正则表达式经编译后的表现模式. 在java中,通过适当命名的Pattern类可以容易确定String是否匹配某种模式.模式可以象匹配某个特定的String那样简单

MySQL字符数据类型char与varchar的区别

数据类型差不多是接触mysql一开始就了解的内容,最近遇到几个现象如varchar自动转mediumtext,blob存储性能的问题,不得不回头明确一下关于MySQL常用数据类型的选择. mysql手册这里 已经讲的很清楚了.它们都是定义字符串型字段时常用的类型,但它们存储和检索的方式有不同,最大长度和尾部的空格是否保留也有差别. char类型是使用固定长度空间进行存储,范围0-255.比如CHAR(30)能放30个字节,存放abcd时,尾部会以空格补齐,实际占用空间 30bytes .检索它的

ASP经典函数语法详细解释

函数|语法 Abs (数值) 绝对值.一个数字的绝对值是它的正值.空字符串 (null) 的绝对值,也是空字符串.未初始化的变数,其绝对为 0 例子:ABS(-2000) 结果:2000 Array (以逗点分隔的数组元素) Array 函数传回数组元素的值. 例子: A=Array(1,2,3)B=A(2)结果: 2说明:变量B为A数组的第二个元素的值. Asc (字符串) 将字符串的第一字母转换成 ANSI (美国国家标准符号)字码. 例子:Asc("Internet")结果:73说明:显示

程序名称:ASP的天空小偷

程序 程序名称:ASP的天空小偷程序类型:小偷,不太文雅啊,呵呵~最新版本:没版本,因为,我不再更新了,有问题自己改程序简介:这个没什么好说的~大家都知道程序作者:小飞哥(这个ID,被封了,哎,犯错了)下载地址:现在很多人都已经有了~就不用再找我要了! 下面的是我给一个朋友写的,关于如何改这个小偷的,不会玩的,自己看看~其实要再改个其它的什么小偷也是很容易的事了 呵呵~     用到的函数说明===============================Instr() 函数返回字符或字符串在另一

将一个数字的十位和个位对调及所想到的。。。

今天碰到一个问题,就是将一个 >10 且 <100的数字的个位和十位对调,首先想到并采用的方法是,分解出两个数字对调并加起来: /*  ab 是源数, ba 是结果数  */解:ba = ( ab - (ab/10) ) * 10 + (ab/10) 突然有个很古怪的想法,用减法可不可以呢?观察后,发觉源数和结果数两个相加后,得出个回环数...那么用减法同样可以实现... 如:求35对调后的数 53 = (5+3)*10 + (5+3) - 35    = 88 -35 如:求47对调后的数

MySQL 4.1.0 中文参考手册 --- 6.2 列类型

mysql|参考|参考手册|中文 MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译 MySQL Reference Manual for version 4.1.0-alpha. 6.2 列类型 MySQL 支持大量的列类型,它们可以被分为 3 类:数字类型.日期和时间类型以及字符串(字符)类型.这个章节首先给出可用类型的概述,并且总结各类型所需的存储需求,然后提供各类型中的类型范畴更详细的描述.概述有意地简化了.更详细的说明应该参考特写列类型的附加信息,例如你能为其指定值的允许格