免费域名 网站,企业app定制开发设计方案,陕西省住房和城乡建设厅综合服务网站,深圳外贸公司招聘信息三者都实现了CharSequence接口#xff0c;因此CharSequence可认为是一个字符串的协议接口1.String类是不可变类#xff0c;即一旦一个String对象被创建后#xff0c;包含在这个对象中的字符序列是不可改变的#xff0c;直至这个对象被销毁#xff1b;我们常常定义的时候 S…三者都实现了CharSequence接口因此CharSequence可认为是一个字符串的协议接口1.String类是不可变类即一旦一个String对象被创建后包含在这个对象中的字符序列是不可改变的直至这个对象被销毁我们常常定义的时候 String strnew String(定义了我);str“改变了我”;输出是改变了我好像是Str已经改变了其实是改变了str的指向原来堆内存里的对象成为了垃圾2.StringBuffer类StringBuffer代表一个字符序列可变的字符串当一个StringBuffer建立以后通过inser()、appen()、reverse()、serChaAt()、setLength()方法可以改变这个字符串最终生成以后可以通过toString()方法转换为一个String对象3.StringBuilder是JDK1.5新增的也代表字符串对象和StringBuffer相似两个类的构造器和方法也基本相同当时StringBuffer是线程安全的StringBulider没有实现线程安全所以性能略高。因此如果创建一个字符可变的字符串对象则应该优先考虑StringBuilder类比较1.执行速度方面三者有如下关系StringBuilderStringBufferString;2.一、长度都是可扩充的二、StringBuffer是线程安全的StringBuilder是线程不安全的。那么他们的长度是如何实现动态扩充以及StringBuffer的线程安全是如何实现的呢三者都实现了CharSequence接口因此CharSequence可认为是一个字符串的协议接口StringBuffer里面所有的方法除了构造方法以外都由synchronized限定它们两个可扩展长度则是通过ensureCapacity(int minimumCapacity)来验证当前长度是否小于参数minimumCapacity如果成立则进行分配空间。分配新空间的步长为(当前长度1)的两倍。