1. String 1.String对象是不可变的 String类的value属性是用来存放字符串里面的值的.这个属性是被final修饰的.final修饰的变量不能够被第二次赋值,所以字符串是不可变的. 2.java9 以后的String更节约空间,每个字符占用1个字节 String类型在java9之前采用的是char[]来保存对应的值,因此每个字符串占用2个字节.但是到了java9之后,采用byte[]数组加一个encode-flag字段来保存,字符串的每个字符只占用1个字节.所以java9的…
一.基本概念 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”. 那什么叫做“不可变对象”呢?  指的是对象内部的成员变量的值无法再改变.String类 的源码中发现字符串内容全部存储到value[]数组中,而变量value是final类型的,也就是常量(即只能被赋值一次). 这就是“不可变对象”的典型定义方式. 如:substring()是对字符串的截取操作,但本质是读取原字符串内容生成了新的字符串.测试代码如下:      String…
引言 String 类及其相关的StringBuilder.StringBuffer 类在 Java 中的使用相当的多,在各个公司的面试中也是必不可少的.因此,在本周,我打算花费一些时间来认真的研读一下 String.StringBuilder.StringBuffer类 的相关代码. String的不可变性 这个特性是 String 相当重要的一个特性,为了深入理解,我直接贴上其源代码 public String concat(String str) { int otherLen = str.…
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h…
通常在涉及到StringBuilder和StringBuffer时中任何一个时,都应该想到另外一个并且在脑海中问自己是否用另外一个更加合适. 为什么这么说,请继续往下看,当然如果你已经对二者烂熟于胸自然就不必如此了.文章先介绍StringBuffer和StringBuilder,最后再 总结String(如果想要了解String的可以点击这里).StringBuffer.StringBuilder之间的区别.    StringBuffer是什么 StringBuffer是一个线程安全的.可变的…
一.概念 Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年.月.日.时.分.秒的展示和计算. GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统. [提示]月份的表示,一月是0,二月是1,以此类推,12月是11. 因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表 示月份:JANUARY.FEBRUARY等. [代码示例] /* *测试日历 C…
对String而言: String是只读字符串,所引用的字符串不能被改变,一经定义,无法再增删改. String 定义的字符串保存在常量池里面,进行+操作时不能直接在原有基础上拼接. 每次+操作 : 隐式在堆上new了一个跟原字符串相同的StringBuilder对象,再调用append方法 拼接+后面的字符. 例如:  String str1="ss"; StringBuilder str2=new StringBuilder(ss); str1=str1+"oo"…
本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利   正文:     探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是J…
http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html 注: StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在String…
StringBuffer类和StringBuilder类 三者比较 String 不可变字符序列 底层用char[]存储 StringBuffer 可变的字符序列 线程安全的 效率低 底层结构使用char[]存储 扩容问题 如果要添加的底层数组盛不下,需要扩容底层的数组 默认情况下扩容为原来容量的2倍 + 2 ,同时将原有的数组元素复制到新的数组中 StringBuilder 可变的字符序列 线程不安全 效率高 源码分析 和StringBuffer源码一样,只是线程不安全了而已 三者效率比较 S…