String类 ——不变字符串类
不变字符串:字符串一旦建立,其内容就不能改变,如果要改变字符串的内容,就要生成新的实例。
初始化字符串常用的的两种方式
String str1 = new String("Hello"); //方式1
String str2 = "Hello"; //方式2
String类型的构造方法
//构造一个空的字符串
String()
//用一个字符串来生成一个新的字符串,两个字符串相等
String(String str)
//用数组生成一个新的字符串
String(char[] ch)
//用数组生成一个从ch[a]开始,长度为b新的字符串,
String(char[] ch,int a,int b)
//利用StringBuffer对象来创建一个String类型的字符串
String(StringBuffer str)
String类提供的方法
int length() //返回字符串的长度
char charAt(int index) //返回字符串中index位置的字符
String toLowerCase() //将当前字符串中所有字符转换成小写
String toUpperCase() //将当前字符串中所有字符转换成大写
String subString(int beginIndex) //返回从beginIndex开始的子串
String subString(int beginIndex,int endIndex) //返回从beginIndex开始到endIndex之前的子串
String replace(char oldChar,char newChar) //将字符串中的所有oldChar转换为newChar
String indexOf(String str) //返回str在字符串中第一次出现的位置
String concat(String str) //将str连接在当前字符串的尾部
boolean equals(String str) //比较str与当前字符串的内容是否相同
boolean equalsIgnoreCase(String str) //比较str与当前字符串的内容是否相同,并且忽略大小写
int compareTo(String str) /*比较str和当前字符串的内容,返回差值。(若str和当前字符串相等,返回0;若和当前字符串不相等,则返回第一个不同字符的差值;若str和当前字符串仅长度不同,则返回两者长度的差值)
-
equals()
判断两个String对象内容是否相同。
-
==
判断两个String对象是否为同一实例,即在内存中的存储空间是否一致。
String s1 = "Hello world!";
String s2 = "Hello world!";
String s3 = new String("Hello world!");
System.out.println(s1.equals(s2)); //输出true
System.out.println(s1.equals(s3)); //输出true
System.out.println(s1==s2); //输出true
System.out.println(s1==s3); //输出false
StringBuffer类——可变字符串类
-
可变字符串:字符串中的内容是可以改变的
-
StringBuffer在进行字符串处理时,不会再产生新的实例,而是直接操作原字符串。
-
在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer更加合适
-
系统为StringBuffer类对象分配内存时,除去字符所占空间外,在另加16个字符大小的缓冲区
StringBuffer s1 = new StringBuffer();
//创建一个大小为16个字符的空StringBuffer对象
StringBuffer s2 = new StringBuffer(40);
//创建一个大小为40个字符的空StringBuffer对象
StringBuffer s2 = new StringBuffer("Hello");
//创建一个大小为21个字符的空StringBuffer对象
注意:StringBuffer和String属于不同的类型,也不能直接进行强制类型转换。
StringBuffer对象和String对象之间相互转化
String s = "abc";
StringBuffer sb1 = new StringBuffer("123");
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
String s1 = sb1.toString(); //StringBuffer转换为String
StringBuffer类提供的方法
int length() //返回StringBuffer对象中字符的长度
int capacity() //返回StringBuffer对象缓冲区的容量
void ensureCapacity(int size) //设置StringBuffer对象的缓冲区容量
void setLength(int len) //设置StringBuffer对象字符长度
StringBuffer append(Object obj) //连接StringBuffer对象(如果操作后的字符超出已分配的缓冲区,系统会自动为它分配额外的空间)
注意:String中对字符串的操作不是对原操作串对象本身进行的,而是对新生成的一个原操作串对象的拷贝进行的,其操作的结果不影响原字符串。
相反,StringBuffer中对字符串的连接是对原字符串本身进行的,操作之后原字符串发生改变,变成连接后的字符串。
除了对运算符“ + ”进行重载外,java不支持其他运算符的重载。