字符串
String类
声明字符串
字符串是常量,可显示任何文字信息,创建后不能更改
String a,
String a,b; //声明两个字符串变量a和b
在不给字符串变量赋值的情况下,默认值为null,即空对象,如果此时调用String的方法会发生空指针异常
创建字符串
1.引用字符串常量
String a="happy";
String str1,str2; //两个字符串引用相同的常量
str1="study";
str2="study";
2.利用构造方法(使用new关键字创建String对象)
String a=new String("happy");
String b=new String(a);
3.利用字符数组
char[] charArray={'h','a','p','p','y'};
String a=new String(charArray);
4.提取字符数组中的一部分创建字符串对象
char[] charrArray={'h','a','p','p','y'};
String a=new String(charArray,3,2); //从索引3开始提取两个元素
连接字符串
1.使用+、+=拼接字符
String a="happy";
String b="everday";
String c=a+b+'!'; //c输出是happyeverday!
java中相连的字符串不可以直接分成两行,例如:
System.out.println("happy new
year"); //这种写法是错误的,如果一个字符串太长,为便于阅读,可以分两行写,此时需用“+”将两个字符串连接起来
即应该写成
System,out.printfln("happy new"+
year");
String自带的concat()方法可以连接字符串
语法
a.concat(str);
//a:原字符串
//str:原字符串末尾要拼接的字符串
2.连接其他数据类型
int i=1,j=2;
System.out.printfln("我"+i+"天吃"+j+"个苹果"); //输出结果是我1天吃2个苹果
这里i和j不是字符串,当它们与字符串相连时会自动调用toString()方法,将其转换成字符串形式然后连接
注意:“+”运算符两侧必须至少有一个是字符串类型,编译器才会将另一个操作数转换成字符串形式
提取字符串信息
1.获取字符串长度
使用length()方法
str.length();
2.获取指定的字符
使用charAt(String index)方法
str.charAt(index); //index:char值的索引
3.获取子字符串索引位置 (返回int型的值,没有就返回-1)
3.1(1)使用indexOf(String str)方法
a.indexOf(str);
//str:要搜索的字符,可以是单个字符,也可以是一个字符串,若果是字符串,则返回的是第一个字符所在的位置
(2)使用indexOf(String str,int formindex)方法
a.indexOf(str,formindex);
//str:要搜索的字符
//搜索的开始位置索引
3.2 (1)public int lastIndexOf(String str) 返回指定子字符串在此字符串中左右边出现的索引位置
a.lastIndexOf(str);
(2)lastIndexOf(String str,int formIndex)方法
`a.lastIndexOf(str,formIndex); //formIndexOf:搜索的开始位置索引
4.判断字符串首尾内容
4.1 startsWith(String prefix)方法 (用于判断字符串是否以指定的前缀开始)
a.startsWith(prefiex); //prefiex:指定的前缀内容
4.2 startsWith(String prefiex,int toffset)方法 (用于判断从指定的索引开始的字符串是否以指定的前缀开始)
a.startsWith(prefiex,toffset); //toffset:开始查找的位置
4.3 endsWith(String suffix)方法 (用以判断是否以指定的后缀结束)
a.endsWith(suffix);
4.4 endsWith(String suffix,int index) 方法
a.endsWith(suffix,index); //index:开始查找的位置
5.获取字符串数组
str.toCharArray();
输出字符串中的每一个元素
6.判断子字符串是否存在
str.contains(string); //string:查询的字符串
7.截取字符串
(1) substring(int beginIndex)方法 (返回一个新的字符串,是此字符串的一个子字符串)
str.substring(beginIndex); //beginIndex:起始索引,包括在内
(2) substring(int beginIndex,int endIndex);
str.substring(beginIndex,endIndex); //beginIndex:截取的起始索引,包括在内
//endIndex:截取的结束索引,不包括
8.字符串替换
(1) replace(charSequence target,charSequence replacement)(不支持正则表达式)
str.replace(oldstr,newstr);
//oldstr:要被替换的字符串
//newstr:替换的新的字符串
如果oldstr出现多次,则全部替换,若没有找到oldstr则将原字符串返回
(2)replaceAll(String regex;String replacement) (可实现将指定的字符串替换成新的字符串,支持正则表达式)
str.replaceAll(regex,replacement);
//regex:被替换的字符串或正则表达式
//replacement:替换后的字符串
(3)replaceFirst(String regex,String replacement)
可实现将第一个指定的字符串替换成新的字符串,支持正则表达式
str.replaceFirst(regex,replacement);
正则表达式:例如"\\d"表示0~9中的任何一个数,"\\d"就是元字符
9.字符串分割
(1)split(String regex)可进行拆分,支持正则表达式,最后返回一个字符串数组
str.split(regex); //regex:分隔符表达式
若想要同时定义多个分隔符,可以使用“|”分割字符串
例如,同时使用“,”、空格、”|“、数字分割、用符号”|“连接所有分隔符
String str;
String[]=str.split(",| |\\||\\d");
(2)split(String regex,int limit) 可根据给定的分隔符对字符串进行拆分,并限制拆分的次数,支持正则表达式
str,split(regex,limit); //regex:分隔符表达式,limit:限定分割的次数
如果用点做分隔符,需用转义字符"\\."
10.大小写转换
(1)toLowerCase()方法 将String转换为小写,将一个字符串中每个字符全部转换为小写字母
str.toLowerCase();
(2) toUpperCase()方法,同上
11.去除空白内容
(1)trim()方法可以返回字符串的副本,忽略首尾处空白
str.trim();
去除字符串中所有的空白内容,利用正则表达式“\\s”,将字符串中所有的空白内容全部替换成空字符
String str=str.replaceAll("\\s","");
12.比较字符串是否相等
对字符串对象进行比较不能就简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串地内存地址是否相同
(1)equals(String str);将此字符串与指定的对象比较,当且仅当该参数不为null,并且是与此对象表示相同的字符序列的String对象时,结果才为true
a.equals(str); //a:任意字符串对象,str:进行比较的字符串
(2)equalsIgnoreCase(String anotherString) 此字符串与指定字符串进行比较不考虑大小写
a.equalsIgnoreCase(str);
可变字符串
1.创建String类,必须用new方法
StringBuffer str=new StringBuffer("abc"); //创建一个对象并初始化
StringBuffer str=new StringBuffer(32);//创建一个对象,初始容量为32个字符
2.append()方法 将参数转换为字符串,将所得的字符串加到此序列
str.append(obj); //obj:任意数据类型的对象,例String、int、double、boolean等
3.setCharAt(int index,char ch)方法,将给定索引处的字符修改为ch
str.setCharAt(index,ch); //index:要被替换的字符的索引,ch:替换后的字符
4.insert(int offset,String str)方法,将字符串插入此字符序列中
a.insert(offset,str); //offset:插入的索引,str:插入的字符串
5.reverse()方法,可以将字符串反序输出
str.reverse();
6.delete(int start,int end)方法,从start索引处开始一直到end结束,若start=end则不发生任何更改
str.delete(start,end); //start:开始索引,包括在内,end:结束索引,不包括在内
StringBuilder类的使用方法
StringBuffer和StringBulider类具有兼容的API,所以两者的使用方法也相同