本帖最后由 韩新凯 于 2012-4-23 23:09 编辑
把sc = sb ;这样写能明白吗?sc = sb.append("1234567890");
public StringBuffer append(String str)返回:此对象的一个引用。
这样说吧:public class Test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
// sb.append("1234567890");//把这行先注释掉
// System.out.println("sb11="+sb);//这行也注释了
StringBuffer sc = new StringBuffer();
System.out.println("sc.equals(sb)="+sc.equals(sb));//注意这里,这里的结果返回的是false !!!
// sc=sb;
sc = sb.append("1234567890");//这句话等价于sb.append("1234567890");加上 sc=sb;
System.out.println("sc.equals(sb)="+sc.equals(sb));//接下来注意这里,这里的结果返回的是true。这说明什么?说明到这里sc和sb指向同一个对象。接下来的代码不是重要的地方。
System.out.println("sb11="+sb);
// sc.append("abcdefg");
System.out.println("sc="+sc);
sc = sc.delete(1,sc.length()-1);//delete(1,sc.length-1);删除的是从第1位开始到sc.length-1之间的内容。不包括第1位但包括第sc.length位。
System.out.println("sb="+sb);//按照我举例用的“1234567890”,sc.length == 10;所以删除了除了第一位和第十位外其他的内容。剩下的就是10.
System.out.println("sc="+sc);
}
}
你的sc.delete(0,sc.length()-1);是把第一位也给删出了,只剩下了最有一位。如果把sc.length-1换成sc.length,那你就什么也打印不出来了。
sb11=1111111111111111111122这个好理解就不解释了。 |