一、String
String一旦声明,长度和内容都不可改变。适合少量数据的简单操作。
声明初始化:
String str = "Hello ";
String str = new String("Hello ");
连接:
String str = "Hello ";
str += "World!";
string1.concat(string2)
获取长度:
str.length()
是否包含:
str.contains("Hello")
取每个字符:
str.charAt(0)
替换:
str1.replace("a", "b")
Str.replaceAll("(.*)a(.*)", "b" ) //支持正则
分割:
str.split("_")
子串:
Str.substring(4, 10)
转字符数组:
Str.toCharArray()
删除头尾空白:
Str.trim()
指定字符第一次出现位置:
string.indexOf("a",3)
字符串hash值:
Str.hashCode()
以某某开头或结尾:
Str.startsWith("www")
Str.endsWith( "com" )
二、StringBuffer
由于String的内容不可变性,导致操作字符串效率低,且浪费空间。而StringBuffer不同,在处理字符串时一般不会重新生成。StringBuffer 默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象。适合大量数据的多线程操作。
声明初始化:
StringBuffer str = =new StringBuffer(32); //分配32字节长度
StringBuffer str = new StringBuffer("Hello "); //放置字符串的同时,预留16字节长度
追加:
str.append("Word")
删除:
str.deleteCharAt(0)
str.delete(1, 4) //[1,4)
插入:
str.insert(0, "aaa")
修改单个字符:
str.setCharAt(3, 'b')
设置字符序列长度:
str.setLength
转换成string:
str.toString()
反转:
str.reverse()
三、StringBuilder
String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
StringBuilder类和StringBuffer类功能相似,主要区别在于StringBuffer类的方法是多线程安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。适合大量数据的单线程操作。