String对象是不可修改的,字符串一旦创建,就不能再修改内容;
String类有13个构造方法以及40多个处理字符串的方法——
构造字符串
创建字符串的方法——
- 使用字符序列作为构造方法的参数创建字符串对象
String mystring=new String("this is my new String");
- 使用字符串字面值直接创建字符串对象
String myString="this is my new String"
- 使用字符数组创建字符串对象
char[] mycharArray={'t','h','i','s'}; String myString=new String(mycharArray);
不可变字符串与驻留字符串
JVM中对于相同字符序列的字符串使用同一个字符串对象存储(因为字符串是不变的,且经常使用),这样的实例对象称为主流的字符串; 如:
String s1="this is myString";
String s2="this is myString";
String s3=new String("This is myString");
s1==s2;
s1==s3;
上面的代码中,s1==s2为true;s1==s3为false;
原因就是s1和s2指向相同的驻留字符串,而s1和s3不是同一个字符串对象;
替换和分拆字符串
Sting类提供了替换和分拆字符串的方法——
replace(oldchar,newchar)//将字符串中的oldchar替换为newchar
replaceFirst(oldSring,newString)//将字符串中第一个匹配的子串替换为newString;
replaceAll(oldStriing,newString)//将字符串中所有匹配的子串替换为newString
split(delimiter):String//返回一个字符串数组,其中包含被分割拆分的子字符串集;
以上其中的replaceAll()、replaceFirst()和split()可以将正则表达式作为参数;
字符串与数组之间的转换
字符串可以转换为数组,反之亦然;
- 将字符串转化为数组——toCharArrayy()
- 将字符数组转化为字符串——getChars()
StringBuffer类和StringBuilder类
StringBuffer 类和StringBuilder类创建的字符串对象是可以改变的,这点区别于String类;可以给这两个创建的字符串中添加、插入、或者追加新的内容;
区别:StringBuffer类中的修改缓冲区的方法是同步的,也就是说是有一个任务被允许执行该方法;——多任务并发访问使用StringBuffer,防止缓冲区被破坏;但是在单任务之下,StringBuilder效率更高;