我爱编程

Java菜笔记:String、StringBuilder、Str

2018-06-11  本文已影响0人  挺婷Tina

String 是Java里面最常用的字符串类型,是不可变的,拼接裁剪都会产生新的String对象。而StringBuilder和StringBuffer常用于要大量拼接字符串的情况;而StringBuilder是非线程安全的,StringBuffer是线程安全的,两者的区别好像只限于StringBuffer在设置的方法上添加了synchronized字符;在拼接不同String对象的时候,就会产生大量中间对象的问题;

扩展1:如何设计一个线程安全类?

Ans:参考StringBuffer类,直接在修改的方法上都加了synchronized

设计的时候优先考虑可靠性、可读性

扩展2:字符串的缓存

JDK6提供了一个intern,显示地排重返回字符串缓存,被缓存的字符串将存在PermGen里,基本也就只能等着FullGC来回收;所以如果使用不当,很容易引发OOM

扩展3:字符串的编码

一般我们用String.getBytes时,都要指定读取的编码格式,不然就会依赖于操作系统的编码格式来返回东西了。一台机器上可能默认返回的事Unicode,到另外一台机器可能就不是了。

上一篇下一篇

猜你喜欢

热点阅读