String和StringBuffer都代表字符串,但是由于其内部实现的不同,String被看作为不可变字符串,而StringBuffer被看作为可变字符串。对于String的每次改变都会生成一个新的字符串(例如字符串的连接),比较耗费内存。而StringBuffer每次都是改变自身,不会产生新的对象,比较节约内存。
一、String
1、String对象的初始化。
简化语法:
String s = "abc";
s = "JAVA";
标准语法:
String s = new String("abc");
s = new String("JAVA");
PS:使用标准用法在内存上存在比较的消耗。例如String s= new String("abc");实际上创建了两个 String 对 象, 一个是” abc” 对象,存储在常量空间中, 一个是使用 new 关键字为对象 s 申请的空间。
2、字符串常见操作:
1、char charAt(int index) 返回指定索引处的 char 值(索引值从0开始,以此类推)
2、 int compareTo(String anotherStirng)从字符串的第一个字符开始按照字符编码比较字符串大小
3、String concat(String str) 将指定字符串连接到此字符串的结尾
其实在实际使用时, 语法上提供了一种更简单的形式, 就是使用“ +” 进行字符串的连接。 例如:
String s = “abc” + “1234”;
4、boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束,
5、boolean equals(Object anObject) 将此字符串与指定的对象比较,相同则返回true,不同则返回false
6、getBytes() 该方法的作用是将字符串转换为对应的byte数组,从而便于数据的存储和传输
7、indexof() 该方法的作用是查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1.
8、length() 该方法的作用是返回字符串的长度,也就是返回字符串中的字符的个数(中文字符也是一个字符)
9、replce() 替换字符串中所有指定的字符,然后生成一个新的字符串。
10、以特定的字符串作为间隔,拆分当前字符串的内容,一般拆分以后获得一个字符串数组
11、startsWith 该方法的作用和endsWith方法类似,只是该方法是判断字符串是否以某个字符串作为开始
12、substring() 去字符串中的”子串“,所谓”子串“即字符串中的一部分。例如”23“是字符串”123“的子串
13、toCharArray() 和getBytes方法类似,即将字符串转换为对应的char数组。
14、trim() 去掉字符串开始和结尾的所有空格,然后形成一个新的字符串,该方法不去掉字符串中间的空格
15、valueOf() 将其它类型的数据转换为字符串类型。
PS:基本数据和字符串对象之间不能使用强制类型转换的语法进行转换。
二、StringBuffer
如果经常需要对一个字符串进行修改, 例如插入、删除等操作, 使用 StringBuffer 要更加适合一些。StringBuffer是线程安全的。
1、StringBuffer对象的初始化。
StringBuffer s = new StringBuffer(); //初始化一个空的对象
StringBuffer s = new StringBuffer("abc"); //初始化出 StringBuffer 对象的内容就是字符串” abc”
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
3、public StringBuffer delete(int start, int end) 删除指定区间以内的所有字符,包含start,不包含end索引的区间