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(点击此处查看本站版权声明)
必须 注册 为本站用户, 登录 后才可以发表评论!