String,StringBuilder,StringBuffer的区别
在Java中有三个类String,StringBuilder ,StringBuffer来表示和操作字符串。(字符串就是多个字符的集合)
1、字符串长度是否可变:
1.1 String:字符串常量,长度不可变的字符串。
String对象一旦创建之后该对象是不可更改的。因为String底层使用了一个不可变的字符数组(final char[])
拼接方式代码:
String str="aaa";
str+="bbb";
System.out.println(str);
//输出的结果是aaabbb
1.2 StringBuilder,StringBuffer均为字符串变量。
拼接方式代码:
StringBuilder sb = new StringBuilder();
sb.append("a").append("b");
System.out.println(sb);
//输出的结果是ab
2.线程是否安全,以及效率
StringBuffer是线程安全的,效率较低 。(适用于多线程下操作大量数据)
StringBuilder是线程不安全的,效率较高(适用于单线程下操作大量数据)。
String类效率最低(适合操作数量较小)
3.运行速度的快慢:
StringBuilder > StringBuffer > String
4.继承上的关系
String , AbstractStringBuilder 继承自Object类
StringBuffer ,StringBuilder继承自AbstractStringBuilder类