- 首先 String 是字符串常量 其它两个是字符串变量
- 其次 Stringbuilder 线程不安全 是单线程 运行效率最高
- String 和 Stringbuffer 是线程安全的 所以效率没有Stringbuilder 高
- 最后 Stringbuilder 是单线程 运行效率最高
String 和 Stringbuffer 多线程 运行效率相对低
之前我对这三个的理解 很局限,
String 在java lang包里面,被fianl 修饰, 不能被继承, 字符串底层封装了字符数组以及针对字符数组的操作算法
字符串一旦被创建,对象永远无法改变,但字符串的引用是可以改变,在java 里面 字符串在内存中 采用 Unicode 编码方式,
任何一个字符对应两个字节的定长编码;
String 在内存空间(常量池)里面所创建的对象 是被重复利用, 除非new 对象; 例如:在字符串拼接的时候,在原有的对象上进行复制,然后在继续进行拼接 特别注意的是 “1234”+“abcd”与 “1234abcd” 在编译成.class 文件的时候,把前者进行了合并, 所以完了前后的连个代码 地址一样,但是 如果 a="1234" b="abcd" 和 c= "1234abcd" a+b 与 c 的地址不一样。
真因为以上的原因 所以java 现在定义了 StringBuffer 类 线程安全,就是为了进行多次修改使用,(一些常用的方法可以查看API ) 最后在5.0 版本以后 有增加了 StringBuilder 线程不安全 但是运行效率高
其次 StringBuffer 和StirngBuilder 两个类的方法 基本上都相同,再补充一点 String字符串的拼接是利用StringBuilder 来实现的
以上的东西都是为我以后的方便阅读所写,若果有人发现技术行错误,请给我指出,谢谢!我的字文章没有别的意思,就是我的一个的总结!