0.1String类
单个字符可以使用char类型保存,多个字符组成的文本就需要保存在string对象中,string通常被称为字符串,一个string对象最多可以保存 (-1)个字节(占用4gb空间大小)的文本内容。
本节讲解string类的使用方法。
10.1.1声明字符串
在java语言中,字符串必须包含在一对双引号(" ")之内。例如:
"57"、"YuanDao"、"你好"
以上这些都是字符串常量,字符串常量可以是系统能够显示的任何文字信息,甚至可以是单个字符。
可以通过以下语法格式来声明字符串变量:
String str;
String:指定该变量为字符串类型
str:任意有效的标识符,表示字符串变量的名称。
声明字符串变量s,代码如下
String s;
注意
声明的字符串变量必须经过初始化才能使用,否则编译器会报出“变量未初始化错误”
10.1.2创建字符串
在java语言中,将该字符串作为对象来处理,
1.String(char a[])
该方法用一个字符数组ch创建string对象,代码如下:
//字符串变量的初始化,传入字符类型的数组
//字符串变量的初始化,传入字符类型的数组
char[] ch= {'g','o','o','d'};
String st =new String(ch);
System.out.println(st);
2.String(char c[],int offset,int length)
该方法提取字符数组c中一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,
length表示截取字符串的长度。代码如下:
char[] c = {'s','t','u','d','e','n','t'};
String s =new String(c,1,3);
System.out.println(s);
//字符串变量的 初始化,传入字符类型的数组,前索引,需要的个数
10.2连接字符串
10.2.1连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象产生一个新的Sting对象。
例题10.1
public class join{ //创建类
public static void mian(String args[]){//主方法
String s1 = new String("你是一个一个一个");//声明String对象1
String s2 = new String("你是那个那个那个");//声明String对象2
String s =s1+"\n"+s2;//将对象s1、“\n”和对象s2连接并且将结果赋值给s
System.out.println(s);//将s输出
}
例题10.2
package ten;
public class xi2 {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
int booktime =4;//声明的int型变量booktime
float practice =2.5f;//声明的float型变量practtice
//将字符串与整形、浮点型变量相连,并将结果输出
System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");
}
}
10.3获取字符串信息
10.3.1获取字符串长度
字符串作为对象,可通过相应方法获取字符串的有效
信息,如获取某字符串的擦汗高难度、某个索引位置的字符等。
使用String类的length()方法可获取声明的字符串对象的长度。语法如下:
str.length();
其中,str为字符串对象。
获取字符串长度,代码如下:
String a ="Yuan"
int size =a.length();
上段代码是将字符串str的长度赋值给int型变量size,此时变量size的值为4,者表示length()
方法返回的字符串的长度(包括字符串中的空格)
10.3.2字符串查找
1.indexof(String s)
indexof()方法返回的是搜索的字符或者字符串首次出现的位置
//查找字符串中第一个出现该元素的位置
int indexof =b.indexOf("l");
System.out.println(indexof);
2.lastIndexOf(String str)
该方法用于返回指定字符串最后异常出现的索引位置。当调用String类的lastIndexOf()方法时,会从当前字符串的开始位置检索字符串str,如果没有检索到字符串str,该方法返回-1.语法如下:
str.lastLdexOf(substr)
str:任意字符串对象
substr:要索引的字符串
例题10.3
10.3.3获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。语法如下:
str.charAt(int index)
str:任意字符串
index:整型值,用于指定要返回字符的下标。
例题10.4
10.4字符串操作
10.4.1获取子字符串
1.substring(int beginindex)
该方法返回的是从只当的索引位置开始截取直到该字符串结尾的子窜。语法如下:
str.substring(int beginIndex)
截取字符串,代码如下:
String str ="Hello World";//定义字符串str
String substr=str.substring(3);//获取字符串,此时substr值为lo world
在字符串中,空格占用一个索引位置。
2.substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。
substring(int beginIndex,int endIndex)
beginIndex:开始截取子字符串的索引位置
endIndex:子字符串在整个字符串中的结束位置
习题10.5
public class Subs{ //创建类
public static void main(String args[]){ //主方法
String str="《将进酒》:李白(唐)"; //定义的字符串
String substr =str.substring(6.8); //对字符串进行截取
System.out.print("《将进酒》的作者是"+suber); //输出截取后的字符串
}}
10.4.2去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。语法如下:
str.trim()
习题10.6
package ten;
public class xi6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//去除首尾空格
String st = " Yuan Dao ";
System.out.println(st+"的长度"+st.length());
String trim =st.trim();
System.out.println(trim+"的长度为"+trim.length());
//
}
}
10.4.3字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。语法如下:
str.replace(CharSequence target,CharSequence replacement)
target:要替换的字符或字符串
replacement:用于替换原来字符串的内容。
replace()方法返回的结果是一个新的字符串。如果字符或字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
习题10.7
public class NewStr{ //创建类
public static void main(String args[]){//主方法
String str ="address";//定义字符串str
String newstr=str.replace("a","A");//将str中“a”替换成“A”并返回新字符串newstr
System.out.print(newstr); //将字符串newstr输出
}}
10.4.4判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以只当的内容开始或结束。这两个方法的返回值都为boolean类型。
1.startsWith()方法
判断前缀
String num2 = "114514";
boolean startsWith = num2.startssWith("11");
System.out.println(startssWtih);
2.endsWith()方法
判断后缀
String num2 = "114514";
boolean endsWith = num2.endsWith("14");
System.out.println(endsWtih);
10.4.5判断字符串是否相等
对字符串对象进行比较不能简单地使用比较符“==”因为比较运算符比较得是两个字符串得地址是否相同。即使两个字符串得内容相同,两个对象得内存地址也是不同得,使用比较晕眩符仍然会返回false。
使用比较运算符比较两个字符串,代码如下;
String s1 = new String("abc");
String s2 = new String("abc");
boolean b1 =(s1 ==s2 );
1.equals()方法
如果两个字符串具有相同得字符和长度,则使用equlas()方法进行比较时,返回true。否则返回false。语法如下:
str.equals(String otherstr)
2.equalslgnoreCase()方法
使用equals()方法对字符串进行比较时是区分大小写得,使用此方法是忽略大小写得情况下比较两个字符串是否相等,返回结果仍未Boolean类型。语法如下:
str.equalsignoreCase(String otgerstr)
例题10.9
String s1 = new String("abc");
String s2 = new String("abc");
boolean b1 =(s1 ==s2 );
System.out.println(b1);//newString空间不一样
boolean b2 = s1.equals(s2);
System.out.println(b2);//判断内容是否一样
String s3 ="ABC";
boolean b3 =s1.equalsIgnoreCase(s3);//忽略大小写
System.out.println(b3);
10.4.6按字典顺序比较两个字符串
语法
str.compareTo(String otherstr)
其中,str、otherstr是要比较得两个字符串对象。
说明compare To()方法只有在equals(Object)方法返回true时才返回0.
例题10
//按照Unicode值比较字符串先后顺序
String str1 ="a";
String srt2 ="b";
String str3 ="c";
System.out.println(str1.compareTo(srt2));
System.out.println(str1.compareTo(str1));
System.out.println(str3.compareTo(srt2));
10.4.7字母大小写转换
tolowercase是将所有大写字母转化为小写字母
touppercase是将所有小写字母转换为大写字母
例题11
String stri ="Yuan Dao";
String lower = stri.toLowerCase();//小写
String upper = stri.toUpperCase();//大写
System.out.println(lower);
System.out.println(upper);
说明,使用此方法时,数字或其他非英文字母类转换字符不受影响
10.4.8字符串分割
String strin ="192.168.0.1";
String[] split1 =strin.split("\\.");
String[] split2 =strin.split("\\.",2);
System.out.println("全部分割结果:");
for(String temp : split1) {
System.out.println(temp);}
System.out.println("分割两次得结果:");
for(String a: split2) {
System.out.println(a);
}
System.out.println();
}}
10.5格式化字符串
10.5.1日期和时间字符串格式化
10.5.2常规类型格式化
10.6使用正则表达式
例题17
package ten;
public class xi17 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String regex ="\\w+@\\w+(\\.\\w{2,3})*\\.w{2,3}";
String str1 ="aaa@";
String str2 = "aaaaa";
String str3 ="1111@111ffyu.dfg.com";
if(str1.matches(regex)) {
System.out.println(str1+"是一个合法得E-mail地址格式");
}
if(str2.matches(regex)) {
System.out.println(str2+"是一个合法得E-mail地址格式");
}
if(str3.matches(regex)) {
System.out.println(str3+"是一个合法得E-mail地址格式");
}}
10.7字符串生成器
public class Jerque{//新建类
public static void mian(String[] args){//主方法
String str ="";//创建空字符串
long starTime = System.currentTimeMillis();定义对字符串执行操作的起始时间
for(int i =0;i<10000;i++){//利用for循环执行10000次操作
str = str+i;//循环追加字符串
}
long endTime = System.currentTimeMillis();//定义对字符串操作后的时间
long time= endTime-starTime;//计算对字符串执行操作的时间
System.out.println("String消耗时间:"+time);
StringBuilder builder =new StringBuilder("");//创建字符串生成器
starTime =Sysstem.currentTimeMillis();//更新操作执行前的时间
for(int j =0;j<10000;j++){//利用for循环进行操作
builder.append(j);//循环追加字符
}
—