public class Test { /**
* @param args
*/
public static void main(String[] args) {
String a="A";
StringBuffer A=new StringBuffer(a);
a="B";
StringBuffer B=new StringBuffer(a);
Test t=new Test();
t.ss(A, B);
System.out.println(A+","+B); }
public StringBuffer ss(StringBuffer a,StringBuffer b){
a=a.append(b);
System.out.println("1 "+a);
a=b;
System.out.println("2 "+a);
return a;
}}我认为的输出结果应该是:
1 AB
2 B
B,B
但是实际的输出结果是:
1 AB
2 B
AB,B
我不清楚第三个输出结果是怎么出来的
解决方案 »
- java: char[] cRead--->dll:jboolean cRead[],怎么样在DLL中更改cRead的值返回到java 程序中。
- 用JCreator写的一个APPLET程序运行正常,在IE窗口中运行HTM文件却显示小程序载入失败?为什么呀?
- 一个低级的ASP程序员,想学JAVA,需要重新学C++吗
- 我是菜鸟,求那位高人帮帮我!!
- JCreator的JDK profiles如何设置?
- 类A为什么从外包继承一个protected成员后,类A的子类为什么不能访问这个成员
- 做个调查
- 注意了!!100分求购java Telnet客户端代码!!!高手指点同样给分!!
- Java文件操作问题?
- 请教java有没有类似vb中type的用法
- Java中的几个问题
- 帮忙解释下这段代码
这句话修改了t.ss(A, B);
中参数A指向的StringBuffer对象的内容,使其成为AB了。
但是后面也有 a = b啊
然后return a;
此时 a 应该是 b 的值呢呀
StringBuffer A = new StringBuffer(a); //A指向的StringBuffer对象的内容是"A"
a = "B";
StringBuffer B = new StringBuffer(a); //B指向的StringBuffer对象的内容是"B"
Test t = new Test();
t.ss(A, B); //参数拷贝
System.out.println(A + "," + B); //A的内容被修改了,B的内容没有改变
} public StringBuffer ss(StringBuffer a, StringBuffer b) {
a = a.append(b); //修改了a指向的对象的内容,也就是修改了参数A指向的对象的内容。
System.out.println("1 " + a); //输出 1 AB
a = b; //让a指向了b指向的对象,内容是"B",注意A仍然指向原来的对象,内容是"AB"
System.out.println("2 " + a); //输出 2 B
return a;
}
}