Back End

005.String、StringBuffer、StringBuiIder有什么区别!

PineappleCat · 4月15日 · 2021年 72次已读

String

String是常量,具有不可变性。

JDK1.9之前底层实现是char[]数组,之后是byte[]数组。虽然具有不可变性,但是可以通过反射技术修改数组的字符。

String重写了equals()方法比较的是值,==方法比较的是地址。

字符串的字面值存储在方法区的常量池中,可以共享。JDK1.7之前存储在方法区的常量池中,之后移入堆中。

常用方法:charAt()、contains()、length()、compareTo()、intern()

intern():保留:调用之后会先取常量池中找该对象有没有存在(此时存储在堆中),如果有直接获取该对象,如果没有JDK1.7之前是复制一份对象到堆中,之后是复制的引用。还要注意特殊的关键字:java、void

StringBuffer:线程安全、效率慢

StringBuilder:线程不安全、效率快

两者适用于大量字符串拼接的情况。


Click here to view the copyright notice of this site(点击此处查看本站版权声明)
0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!