Java StringBuilder和String的内存分析的问题 Java StringBuilder String 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String与StringBuffer的区别在于,String中方法对字符串若有更改,返回新的字符串,没有的话,返回本身。而StringBuffer则是修改自身,对于sb2.append("CCC"),原来的AAA就直接在它的空间后面加了CCC,也就是原来的AAA没了,变成了AAACCC 原来的AAA不能没了吧?刚开始sb1,sb2指向的都是常量池里的同一个“AAA”。 如果AAA没了,那sb1输出的结果怎么还能是AAA呢? 另外我想知道StringBuilder sb2 = new StringBuilder("AAA");这个语句创建了多少个对象?我认为我上面的问题跟怎么看这个问题有关 Hi,我个人觉得楼主的问题有些混淆概念。问题1:StringBuilder.append() 返回值为Object的引用,并且引用的内容发生了变化。String.concat(String arg) 返回一个String的引用,这个string的内容是object连接函数传入的参数。很明显两个函数的定义不同,所以对于object的影响也不同。对于函数的行为理解,我想参照API文档(http://docs.oracle.com/javase/6/docs/api/)定义就明白了,与String常量池的概念无关。前者是函数定义的行为,后者是实现函数定义的方式,这是两个不同的概念。使用函数请查看定义,想了解效率和实现,那就学习一下机制。问题2:每个版本的JAVA对于String都有些机制的不同,并且我自己也不是特别确定。我想应该有一个Stringbuilder的一个对象。在String池中有一个"AAA"的实例存储。这个回答还请其他人纠正。最后补充一点,我不明白你是怎么理解对象有还是没有的。这些内容和垃圾回收有关。总之如果是函数行为的问题,参考定义就是法则。 对,我说的不好,不是没了,因为sb1还是指向AAA的,sb2指向的是AAACCC,但是这里面的AAA是同一个东西 内部类、内部接口、内部抽象类都有什么作用啊,求解? JPA 里面可以配置生成数据库表字段注释(COLUMN_COMMENT)吗? Thing in java 第十八章第一个实例 运行有问题,请各位高手帮忙 麻烦帮忙解决一下文件路径的问题 如何让数据库取出的图片横着显示 到底哪里错了 如何实现改变按钮上的文字? jdbc连接sqlserver的问题 关于pdf文件的打印解密问题 java swing中的JEditorPane为什么不支持多语言? jxl导入execl问题 eclipse+cdt新建C项目bianry not found
我个人觉得楼主的问题有些混淆概念。问题1:
StringBuilder.append() 返回值为Object的引用,并且引用的内容发生了变化。
String.concat(String arg) 返回一个String的引用,这个string的内容是object连接函数传入的参数。
很明显两个函数的定义不同,所以对于object的影响也不同。对于函数的行为理解,我想参照API文档(http://docs.oracle.com/javase/6/docs/api/)定义就明白了,与String常量池的概念无关。前者是函数定义的行为,后者是实现函数定义的方式,这是两个不同的概念。使用函数请查看定义,想了解效率和实现,那就学习一下机制。问题2:
每个版本的JAVA对于String都有些机制的不同,并且我自己也不是特别确定。我想应该有一个Stringbuilder的一个对象。在String池中有一个"AAA"的实例存储。这个回答还请其他人纠正。最后补充一点,我不明白你是怎么理解对象有还是没有的。这些内容和垃圾回收有关。总之如果是函数行为的问题,参考定义就是法则。