JAVA基础题

存在666 2010-01-03 06:58:05

public class Test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("a");
StringBuffer[] sbs = new StringBuffer[]{sb,null};
sb.append("b");
sb = null;
sbs[0].append("c");
System.out.println(sbs[0]);
sbs[0] = null;
sbs = null;
}

}


解释下为什么打印abc!
sbs[0] = null;
sbs = null;
这二句又是什么意思?
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dafuw 2010-01-05
  • 打赏
  • 举报
回复
LLL710451618 2010-01-03
  • 打赏
  • 举报
回复
哎,刚想给你讲呢?你又知道了,真是聪明啊,我聊了哈天你就出来了
!不错哦
zhuwen9 2010-01-03
  • 打赏
  • 举报
回复
楼主执行一下下面的代码,根据打印的结果可以更好的判断!!

public class Testt {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("a");
StringBuffer[] sbs = new StringBuffer[]{sb,null};
System.out.println("地址是否一致"+(sb==sbs[0]));
sb.append("b");
sb = null;
System.out.println("地址是否一致"+(sb==sbs[0]));
sbs[0].append("c");
sb = new StringBuffer("a");
System.out.println(sb);//打印a
System.out.println(sbs[0]);//打印abc
sbs[0] = null;
sbs = null;
}

}

StringBuffer[] sbs = new StringBuffer[]{sb,null}; 里面存放的是sb的原始地址
执行sb = null;这一句后
sb指向新的地址
但 sbs 中还是原始sb地址
个人意见,仅供参考,敬请斧正
godismydaughter 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 zff623 的回复:]
Java codepublicclass Test {publicstaticvoid main(String[] args) {
StringBuffer sb=new StringBuffer("a");
StringBuffer[] sbs=new StringBuffer[]{sb,null};//sbs[0]=“a”
sb.append("b");//sbs[0]=“ab”
sb=null;//sbs[0]=“ab”
sbs[0].append("c");//sbs[0]=“abc”
System.out.println(sbs[0]);
sbs[0]=null;
System.out.println(sbs[0]);
sbs=null;
}

}

解释下为什么打印abc!
sbs[0] = null;
sbs = null;
这二句又是什么意思?
[/Quote]。
存在666 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tianweishuiguo 的回复:]
StringBuffer[] sbs = new StringBuffer[]{sb,null};
通过这句,将sbs指向sb先前申请的空间,所以,即使sb后来指向了null,不过其原来的内容通过sbs还是可以访问的,所以打印出来的sbs[0]就是abc了.
sbs[0]=null;//这句后,sb申请的空间才真正的没有人引用了,
sbs = null;这句是将sbs指向null
[/Quote]
谢谢前辈!
指针这块刚刚想半天没明白。。。现在知道了!
东大坡居士 2010-01-03
  • 打赏
  • 举报
回复
StringBuffer[] sbs = new StringBuffer[]{sb,null};
通过这句,将sbs指向sb先前申请的空间,所以,即使sb后来指向了null,不过其原来的内容通过sbs还是可以访问的,所以打印出来的sbs[0]就是abc了.
sbs[0]=null;//这句后,sb申请的空间才真正的没有人引用了,
sbs = null;这句是将sbs指向null

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧