StringBuffer、StringBuilder 我会带着你远行 2022-09-03 01:17 153阅读 0赞 java中的String是不可变的,每一次拼接都会产生一个新字符串,这样会占用的大量的方法区内存,造成内存浪费。 字符串答大量拼接可以使用如下两个: **StringBuffer、StringBuilder** # **一、StringBuffer** # **字符串缓存区对象。** 默认字符串容量是16 StringBuffer s = new StringBuffer("1"); ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzc4MDAx_size_16_color_FFFFFF_t_70][] ![2021080421023666.png][] **优化** 创建StringBuffer时,尽可能给定一个最终的初始化容量,这样减少底层数组的扩容。 ** String和StringBuffer区别** String底层也是byte数组,是final修饰的,不可变。 ![20210804211239751.png][] StringBuffer底层也是Byte数组,但是前边没有final,当数组满了,它会自动扩容,创建新数组,把之前数组中的元素拷贝到新数组中。 # **二、StringBuilder** # 与StringBuffer区别 StringBuffer是线程安全的,在多线程环境下运行是安全的。 StringBuilder非线程安全的。 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzc4MDAx_size_16_color_FFFFFF_t_70]: /images/20220829/f911c5afbc4f42dd837c9f5d758ef02b.png [2021080421023666.png]: /images/20220829/8dc925d6f3b4489aa939a2f3b9b19934.png [20210804211239751.png]: /images/20220829/d391b08cb98d44a88ee086149e47a51c.png
还没有评论,来说两句吧...