11. 《重学 JAVA》-- 字符串
1、String
字符串是由一串字符序列,字符串是有双引号括起来的多个字符。
例子:”你好”,” ”,”A”
字符串是由 Unicode 编码,所以 Java 字符串是包含中文等亚洲字符,如果单个字符用双引号括起来,也会表示是字符串的,另外 String 字符串是不可变字符。
以主流的 JDK 版本 1.8 来说,String 内部实际存储结构为 char 数组。
String 常用的相关 API,值得每一个方法都执行一遍。
equals():比较两个字符串是否相等。String 类型重写了 Object 中的 equals() 方法,equals() 方法需要传递一个 Object 类型的参数值,在比较时会先通过 instanceof 判断是否为 String 类型,如果不是则会直接返回 false,当判断参数为 String 类型之后,会循环对比两个字符串中的每一个字符,当所有字符都相等时返回 true,否则则返回 false。
indexOf():查询字符串首次出现的下标位置。
lastIndexOf():查询字符串最后出现的下标位置。
contains():查询字符串中是否包含另一个字符串。
toLowerCase():把字符串全部转换成小写。
toUpperCase():把字符串全部转换成大写。
length():查询字符串的长度。
trim():去掉字符串首尾空格。
replace():替换字符串中的某些字符。
split():把字符串分割并返回字符串数组。
join():把字符串数组转为字符串。
compareTo():比较两个字符串,方法会循环对比所有的字符,当两个字符串中有任意一个字符不相同时,则 return char1-char2。比如,两个字符串分别存储的是 1 和 2,返回的值是-1;如果存储的是 1 和 1,则返回的值是 0,如果存储的是 2 和 1,则返回的值是 1。
2、StringBuilder
StringBuilder 是 StringBuffer 的单线程版本,在 JDK1.5 更新后有的,是线程不安全的,但意味着执行效率很高。
StringBuilder 常用 API:
append():新增。
delete(int start,int end):删除。
setCharAt(int n ,char ch) / replace(int start, int end, String str):修改。
insert():插入。
length():长度。
3、StringBuffer
StringBuffer 是可变 String,是线程安全的,它的方法是支持线程同步的,线程同步会操作串行型顺序执行,在单线程环境下会影响效率。
StringBuffer,它提供了 append 和 insert 方法可用于字符串的拼接,它使用 synchronized 来保证线程安全,因为它使用了 synchronized 来保证线程安全,所以性能不是很高。
StringBuffer 常用 API:
append():新增。
delete(int start,int end):删除。
setCharAt(int n ,char ch) / replace(int start, int end, String str):修改。
insert():插入。
length():长度。
版权声明: 本文为 InfoQ 作者【杨鹏Geek】的原创文章。
原文链接:【http://xie.infoq.cn/article/33900cbe7b2db2b3a64d49bf5】。文章转载请联系作者。
评论