String类基本描述
-
有三个final类型的基本量
private final char value[]; private final int offset; private final int count;
-
intern()方法
返回一个字符串对象的引用
String类的实例化
-
赋值
String A = "a"; System.out.println(A == A.intern()); //true
-
无参数
String A = new String(); System.out.println(A == A.intern()); //false
-
char[]转String
-
byte[]转String
-
int[]转String
-
String转String
String A = new String("a"); System.out.println(A == A.intern()); //false //String X = "a"; String A = new String(A); //或String X = "a"; String A = new String("a"); //System.out.println(X == A.intern());//true
-
StringBuffer转String
String X = "a"; StringBuffer A = new StringBuffer(X); System.out.println(X == A.intern());//true
-
StringBuilder转String
同StringBuffer
String,StringBuffer和StringBuilder的差异
- String:内存不可变对象
- StringBuffer:相比String,操作字符串时,不需要产生新对象
- StringBuilder:与StringBuffer少了synchronized,多线程时数据不安全,单线程下,运行速度优于StringBuffer
总结
- 少量的数据,用String
- 单线程操作字符串缓冲区下操作大量数据,用StringBuilder
- 多线程操作字符串缓冲区下操作大量数据,用StringBuffer
字符串操作
- 留
源码阅读
- 解压jdk下src.zip,可以查看标准库源码
- 反编译,查看常量池,理解内存布局
网友评论