String和StringBuffer类
什么是字符串?
字符串是在“”(英文双引号)之内的内容,例如“abc”
String和StringBuffer有什么用?
他们可以将字符串封装起来,并且有一系列方法对字符串进行更改查询和排序。其中StringBuffer可以将字符串进行更改,而String不能
String类初始化的语法格式:
public class Example{
public static void main(String[]args){
String a = new String();//第一种方法
String b = new String("abc");//第二种方法
char[] c=new char[]{'A','B','C'};
String d = new String(c);//定义数组为字符串
System.out.println("a"+a+"d");//使用+运算符,将a和d添加到字符串a中
System.out.println(b);
System.out.println(c);
在使用运算符+可以实现两个字符串的合并,并且赋给中间的常量。在Java中,如果+的两边操作数有一个是String类型,则+标识字符串连接运算符
String类的常见操作 | 功能描述 |
int indexOf(int ch) | 返回指定字符在此字符串中第一次出现的索引 |
int lastIndexOf(int ch) | 返回指定字符在此字符串中最后一次出现的索引 |
int indexOf(String str) | 返回指定字符串在该字符串中出现的索引 |
int lastIndexOf(String str) | 返回指定字符串在该字符串中最后一次出现的索引 |
char charAt(int index) | 返回字符串中index上的字符,index取值为0-字符串长度-1 |
boolean endsWith(String suffix) | 判断字符串是否以某个字符串为结尾 |
int length | 返回此字符串的长度 |
boolean equals(Object anObject) | 字符串与子字符串进行比较 |
boolean isEmpty() | 查看是否该字符串的长度为0 |
boolean startsWith(String prefix) | 查看字符串是否以某个字符串开始 |
booleans contains(CharSequence cs) | 查看字符串是否包含某个字符串 |
String toLowerCase() | 将字符串中的字符全部变成小写 |
String toUpperCase() | 将字符串中的字符全部变成大写 |
static String valueOf(int i) | 返回int参数的字符串表示形式 |
char[] toCharArray() | 将字符串转换成一个数组 |
String replace(CharSequence Oldstr,CharSequence Newstr) | 将字符串中的Oldstr用Newstr代替 |
String[] split(String regex) | 根据参数regex,将字符串划分成若干个子字符串 |
String trim() | 将字符串中的所有空格全部清除 |
String substring(int beginIndex) | 从beginIndex开始,返回新的字符串 |
String substring(int beginIndex , int endIndex) | 从beginIndex到endIndex开始,返回新的字符串 |
public class Example{
public static void main(String[]args){
String a = "wasdasdad";
System.out.println("该字符串的长度为:"+a.length());
System.out.println("该字符串是否以w开头"+a.startsWith('w'));
System.out.println("该字符串中第一次出现s的时候在什么位置"+a.indexOf('s'));
System.out.println("该字符串中最后一次出现a的时候在什么位置"+a.lastIndexOf('a'));
System.out.println("该字符串中出现子字符串sd的时候在什么位置"a.indexOf("sd"));
以上为用法。有几个需要注意的点;
1.使用trim方法不能清除所有空格,只能清除前面后面的空格,如果想清除中间的空格,则应该使用replace方法
2.使用vlaueOf()方法可以将int类型的数据转换成字符串,也可以使用valueOf()的重载形式来将float,double等的数据转换成字符串
3.在程序中可以使用==或equals来判断两个字符串是否相等,但是二者有着根本的区别,==是用于比较两个字符串的内存地址是否相同,equals()方法用于比较两个字符串的字符是否相同,不过如果有两个一样的字符串,他们的equals方法一定为true,他们的==一定为false。
4.String在进行获取某个字符时,会用到字符的索引,当访问字符串的字符时,如果字符的索引不存在,则会报错。并且访问字符串中的字符时,索引不能超出字符串长度否则报错。
StringBuffer类的相关操作
前面提到过,String类是final类型的,即String类中的字符串是不可改变的,但是StringBuffer不同,StringBuffer中的字符串的内容和长度是可以改变的。
方法声明 | 功能描述 |
StringBuffer append(char c) | 添加字符到StringBuffer的末尾 |
StringBuffer insert(int offset,String str) | 在StringBuffer中offset位置插入str字符串 |
StringBuffer deleteCharAt(int index) | 移除StringBuffer中指定位置的字符 |
StringBuffer delete(int start,int end) | 移除指定范围的字符串 |
StringBuffer replace(int start,int end,String s) | 用s替换一定范围的字符串 |
void setCharAt(int index,char ch) | 修改在index位置的字符 |
String toString() | 返回StringBuffer缓冲区中的字符串对象 |
StringBuffer reverse() | 将StringBuffer对象用其反转形式取代 |
String和StringBuffer的区别
1.String的内容不可改变,StringBuffer的内容可以改变。
2.String可以使用+来合并字符串,StringBuffer不可以。
3.String类可以重写Object类的equals()方法,StringBuffer类不可以。