public class test4{
//static String x="10";
//static String m="3";
static StringBuffer c=new StringBuffer("C");
static StringBuffer d=new StringBuffer("D");
public static void main(String[] args){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
test4 test=new test4(); String n="4"; operate(a,b);
test.setvalue(c);
System.out.println(a+"."+b+","+d);
}
static void operate(StringBuffer x,StringBuffer y){
x.append(y);
y=x;
//System.out.println(x+"."+y);
}
public void setvalue(StringBuffer t)
{
d=t;
}
}
为什么结果不是AB.AB,C,而是AB.B,C?
//static String x="10";
//static String m="3";
static StringBuffer c=new StringBuffer("C");
static StringBuffer d=new StringBuffer("D");
public static void main(String[] args){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
test4 test=new test4(); String n="4"; operate(a,b);
test.setvalue(c);
System.out.println(a+"."+b+","+d);
}
static void operate(StringBuffer x,StringBuffer y){
x.append(y);
y=x;
//System.out.println(x+"."+y);
}
public void setvalue(StringBuffer t)
{
d=t;
}
}
为什么结果不是AB.AB,C,而是AB.B,C?
解决方案 »
- 求高手帮忙看下代码,哪里错了
- 请问这样的return用法对嘛
- 在Eclipse有关数据连接的问题
- 用readline()读入文本文件中一行,立即处理一行的问题
- 求教:关闭socket后,accept()方法会抛出异常
- javaapi有没有办法获得connection或datasource的密码?紧急求援!
- Rational ROSE 和 Rational XDE 有啥区别?
- 大家来推荐优秀的java软件
- com.microsoft.jdbc.sqlserver.SQLServerDriver在linux下连接问题
- 请问在java中的JTextField中如何使输入的字符是‘*’,用作输入密码,在线等
- 向达人求函数:关于汉字GBK,ASCII,二进制,十六进制的
- 请大家帮我写一篇论文好吗?
x.append(y);
y=x;
//System.out.println(x+"."+y);
}
首先要搞清楚java中的傳值與傳引用在方法里StringBuffer x,StringBuffer y
x引用a對象 y引用b對象
x.append(y);------a里面的改變了成了'AB',x還是引用a
y=x;--------------y的引用變為與x相同,引用a其實到最后僅僅因為方法x.append(y)改變了對象的值,其它只是引用改變了;
y一开始是指向b的,后来y=x,把x引用赋给y,y指向了a,所以原来b的值没有改变