标签:abc String StringBuilder xy StringBuffer 字符串
String、StringBuffer和StringBuilder
同:
- 都用来封装字符串;
- 实现CharSequence接口
不同
-
string被final修饰,是不可变类,一旦赋值,不可改变;
- StringBuffer和StringBuilder都继承自AbstractStringBuilder类,使用字符数组保存字符串,是可变类;
-
创建对象初始化时,String可通过
- String a = new String("abc");
- String a = "abc";两种方法进行初始化
- 而StringBuilder和StringBuffer只能通过new的方法来初始化
-
String字符串修改的方式是先创建一个StringBuffer,其次调用StringBuffer的append()方法,最后调用StringBuffer的toString()方法返回结果;
String a = "abc"; a = a + "d"; System.out.println(a); // a = "abcd";
等同于
StringBuffer xy = new StringBuffer("abc"); xy.append("d"); xy.toString(); System.out.println(xy); // xy = "abcd";
String字符串修改的过程要StringBuffer多几部操作,增加一些临时对象,从而导致代码的效率降低。
StringBuffer和StringBuilder在修改字符串方面要比String的效率高
-
String类实现了equals()方法和hashCode()方法
StringBuffer类没有实现equals()方法和hashCode()方法
-
StringBuffer和StringBuiloder都提供了一系列插入、追加、修改字符串字符序列等方法,用法基本相同,
只是StringBuilder是线程不安全的,StringBuffer是线程安全的
如果单线程使用字符串,则StringBuilder的效率高一些,但是当线程访问时,最好使用StringBuffer
在执行效率上,StringBuilder最高,StringBuffer次之,String最低。
如果要操作数量比较小,应优先使用String类;
如果是单线程操作大量数据,应优先使用StringBuilder;
如果是在多线程操作大量数据,应优先使StringBuffer类
标签:abc,String,StringBuilder,xy,StringBuffer,字符串 来源: https://www.cnblogs.com/ShangStudyJava/p/15467406.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。