简单介绍

       1.String是final类,不允许被继承,方法里通过每次返回一个新对象保证不变性,底层是用char数组实现,实现Serializable, Comparable<String>, CharSequence 

  :intern方法是个native方法,它不会新建一个字符串对象,如果常量池有这个对象,直接返回这个对象;如果没有,则把字符串加入常量池,再返回这个对象。所以"123"=="123".intern是true,它们指向                    同一个对象

  2.StringBuffer是final类,底层是个数组,初始化不指定大小,默认大小16,靠synchronized关键字来保证线程安全

  3.StringBuilder是final类,底层是个数组,初始化不指定大小,默认大小16,线程不安全

  StringBuffer与StringBuilder

     

  都继承了AbstractStringBuilder,除了readObject和writeObject有自己实现外,其他方法调用了父类的方法的

       

  各自实现了自己的readObject和writeObject方法,StringBuffer靠synchronized保证线程安全,方法前加个synchronized修饰,StringBuilder则没有

  StringBuilder和StringBuffer主要方法

  append方法:对原有字符串追加。底层调用System.arraycopy方法,其作用是新建一个数组,把原有字符数组的内容拷贝进来,再把新增内容添加进来。System.arraycopy是个native方法。

posted on 2019-04-06 20:19  柳无情  阅读(113)  评论(0编辑  收藏  举报