我觉得是y是和b指向同一个对象,x和a指向同一个对象,
x.append(y);使x="AB"即a="AB"
y=x使y指向了x也就是a(这个过程中b的值没变)
所以打印a,b会是AB,B
x.append(y);使x="AB"即a="AB"
y=x使y指向了x也就是a(这个过程中b的值没变)
所以打印a,b会是AB,B
解决方案 »
- 通过ajax向servlet请求一个list,请问该ajax这边该如何取值?并在页面表现出来
- 散分啦!问一个关于RMI访问权限的问题.在线等!
- 网页视频播放器问题!
- 请大家帮看看,如何读一个文件,并且备份成两份!
- 年底求助大酬宾拉!! 简单的小问题啊
- [原创]手把手教你建立自己的JAVA聊天室(散分了)
- JDK那里出了问题Exception in thread "main" java.lang.NoClassDefFoundError: test
- jbuilder + jdbc???
- 做过邮件系统的朋友请进,有个问题向你们请教。
- 我登录了SUN公司的主业,可我不知道那一个是下载JDK的。
- 用java如何实现一个类似秒表的功能?
- java写文件乱码问题
而在operator方法中
x=AB y=x=AB
而由于b并未参与其中
所以打一结果为AB B
可以了解一下整个程序中的各个变量的指向
StringBuffer b --------> [B]
初始化之后为以上,调用operator方法,传递的是引用,所以:
StringBuffer x = a ---------> [A]
StringBuffer y = b ---------> [B]
进入operator方法之后为以上所示.
执行x.append(y)和y=x之后呢?
StringBuffer x = a ---------> [AB]
StringBuffer y = x = a -----> [AB]
看看,这里b的内容并不会被改变.
b ------ B
调用了 operator 之后
//x是a的引用,y是b的引用
x.append(y); //实际上是操作a
y=x; //这里就是把y的引用改变了,不再指向b了。变为引用x了,也就是引用a了,
//如果现在 y.append(">_<"); 其实也是在改变a,现在a的值为AB>_<
import java.io.*;
public class fileTest{
public static void main(String[] args) throws java.io.IOException
{
RandomAccessFile file1 = new RandomAccessFile("c:\\1.txt", "r");
RandomAccessFile file2 = new RandomAccessFile("c:\\2.txt", "rw");
String strLine = "";
while ( (strLine = file1.readLine())!=null) {
int ilength = strLine.length();
int[] iResult = new int[ilength];
for (int i = 0; i < ilength; i++) {
iResult[i] = (int) strLine.charAt(i);
}
java.util.Arrays.sort(iResult);
for (int j = 0; j < ilength; j++) {
file2.writeChar((char)iResult[j]);
}
file2.writeUTF("\r\n");
}
}
}