问题描述
如果不知道而想知道就去看java特种兵这本书,讲的很透彻
解决方案
比较讨厌的就是这类人,打着技术的幌子,行推销的勾当. 此类帖子,如果你不是真的有疑问或者想热心帮人解答,而是故弄玄虚的广告贴,只能更让人厌烦,书有多烂不知道,但是此类的推销会让人对书的评估减分,这点是无益的. 很多技术类的论坛,基本全是被这些广告贴搞跨的,这样的例子比比皆是.
解决方案二:
明显的广告贴,一个人发帖,找几个人回帖,然后再伪装成书的作者回答问题,典型的一问一答,呵呵 ,低级
解决方案三:
没想到这里被拿到提问了里面来了,不好意思给大家带来不好的影响,我是写这本书的人,或者叫人为某些东西可以分享的分享者,不算是真正的作者。关于这个问题并不是本书的重点,我们只是通过这个小话题展开一些探讨和思考,逐步理解更多的东西。关于3楼同学提到的+申请新的空间,这个要看情况,有些会涉及到编译时合并的问题。常规情况下会新分配空间,到底会多分配多少空间?以及空间到底是如何转换的,简单说它编译完成后有分配StringBuilder,最后toString出来的,分配的空间不止一块。而常规情况下慢其实的关键不是分配空间部分,因为JVM现在的版本分配一个对象的时间是非常快的,导致的主要原因是循环中的分配会导致前一次循环的结果会变成垃圾,而且垃圾会越来越大,导致不断做GC的情况,随着垃圾越来越大,在经过Minor GC后Survivor空间放不下会直接进入Old区域,那么随之而来的就是不断FULL GC,这些可以将GC日志输出打印得到结论。StringBuilder本身在实现上也会发生扩容的问题,不过它最大的区别在于扩容后在下一轮循环的时候append的内容只要没有达到上限,数组就还可以继续复用,不会变成垃圾,不过它并不是没有优化的余地,它也有缺陷,从数据结构和空间上就能看得非常清楚(当然很多人不需要知道,所以也只是写给一部分人看的)。当然还有很多细节这里肯定说不完,会在样章中说一说,证明这些结论的内容会在讲解JVM的章节联系起来讲,第一章只是说个大概而已,在后续讲解挺多内容的地方也会涉及到相关的问题和原因。为啥和这玩意较劲,一个是天天和他打交道,另一个是希望大家通过理解这种东西然后去逐步思考和理解更多的东西,如果仅仅着眼于这个点上,那么在这本书确实学不到什么,前言没有公布在PDF中是我的遗憾,其实在前言中有说明本书的阅读方法以及适合的人群,针对的人和写作目的。最后我留下一些地址吧,以免大家在这个问题上继续纠结:关于本书还有一些前言、第3、第5章的样章,可以在博客中找到,以及本书写作针对的人群,写作的目的和心态都在博客中存在,谢谢!博客主地址:http://blog.csdn.net/xieyuooo目录及下册要写的内容:http://blog.csdn.net/xieyuooo/article/details/38373409前言(个人推荐,因为这个可以看出你是否适合此书以及如何阅读该书,文章头部是广告,可忽略):http://blog.csdn.net/xieyuooo/article/details/38612913第3章的部分手稿(和实际书有点区别,但不大):http://blog.csdn.net/xieyuooo/article/details/17452383第5章的部分手稿(同上,有点区别):http://blog.csdn.net/xieyuooo/article/details/17318131CSDN勘误沟通:http://blog.csdn.net/xieyuooo/article/details/39339997iteye勘误沟通:http://www.iteye.com/topic/1135477
解决方案四:
太丧心病狂了吧,好多这书的广告。
解决方案五:
String是定长的字符串,StringBuiler是可变字符串,书上都这么说,但是大家用的时候发现String明明是可以“+”的,StringBuiler无非是用append方法而已。事实上不是这样的,String使用“+”之后变成了一个新的字符串,内存中需要新开辟空间的,比如说String str1 = "abc"; str1 += str1;经过这个操作内存中会有两个字符串,一个是“abc” 另一个是“abcabc”,而StringBuiler使用append方法之后不会这样,所以说谁快谁慢,你能体会出来的
解决方案六:
话说,这本书到底咋样~~~
解决方案七:
现在广告都这样了。。。哎。。搞臭这本书的节奏么