1.String类
- 1.1声明字符串
String a;
String a,b;
在不给字符串变量赋值的情况下,默认值为null(空),就是空对象,如果此时调用String的方法会发生空指针异常。
- 1.2创建字符串
String a="时间就是金钱,我的朋友。";
String b="锄禾日当午",c="小鸡炖蘑菇";
String str1,str2;
str1="We are students";
str2="We are students";
其他几种方法
利用构造方法实例化
String a=new String("我爱清汤小肥羊");
String b=new String(a);
//利用字符数组实例化
char[] charArray=('t','i','m','e');
String a=new String(charArray);
//提取字符数组中的一部分创建字符串对象
char[] charArray=('时','间','就','是','金','钱');
String a=new String(charArray,3,2);
2连接字符串
- 2.1连接字符串
public static void main(String[] args) {
String a="abc";//定义一个字符串
String b="123";//定义一个字符串
String c=a+b+"!";//使用"+"拼接字符串
String d="拼接字符串";//定义一个字符串
d+=c;//使用"+="拼接字符串
System.out.println("a="+a);//输出信息
System.out.println("b="+b);//输出信息
System.out.println("c="+c);//输出信息
System.out.println("d="+d);//输出信息
}
java中相连的字符串 :分两行写需要加号连接
- 2.2连接其他数据类型
public static void main(String[] args) {
int booktime=4;//声明int型变量booktime
float practice=2.5f;//声明float型变量practice
System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");//输出信息
}
+ 的一端是字符串那么他会将另一端转换为字符串
3.提取字符串信息
- 3.1获取字符串长度
length 关键字
使用:字符串.关键字
- 3.2获取指定的字符
charAt(index) 关键字
public static void main(String[] args) {
String str="床前明月光,疑是地上霜。";//定义一个字符串
char chr=str.charAt(4);//将字符串str中索引位置为4的字符赋值给chr
System.out.println("字符串中索引位置为4的字符是:"+chr);//输出chr
}
- 3.3获取子字符串索引位置
格式:a.indexOf(substr);
a:任意字符串对象
substr:要搜索的字符串。
public static void main(String[] args) {
String str="12345abcde";//创建字符串对象
int charIndex=str.indexOf("abc");//获取字符串str中"abc"首次出现的索引,赋值给charIndex
if(charIndex!=-1){//判断:index的值不等于-1
System.out.println("str中存在abc字符串");//如果index的值不等于-1,就执行此代码
}else{
System.out.println("str中没有abc字符串");//如果index的值等于-1,就执行此代码
}
}
如果参数是一个字符串,返回的结果是字符串第一个字母所在位置
indexOf(String str,int fromlndex)
从指定的索引fromIndex 开始至字符串最后,返回指定子字符串在此字符串中第一次出现处的索引。如果没有检索到字符串str,该方法的返回值为-1.
a.indexOf(str,fromIndex);
a:任意字符串对象
str:要搜索的子字符串
fromIndex:开始搜索的索引位置
public static void main(String[] args) {
String str="We are the world";//创建字符串
int firstIndex=str.indexOf("r");//获取字符串中"r"第一次出现的索引位置
int secondIndex=str.indexOf("r",firstIndex+1);//获取字符串中"r"第二次出现的索引位置
int thirdIndex=str.indexOf("r",secondIndex+1);//获取字符串中"r"第三次出现的索引位置
System.out.println("r第一次出现的索引位置是:"+firstIndex);//输出信息
System.out.println("r第一次出现的索引位置是:"+secondIndex);//输出信息
System.out.println("r第一次出现的索引位置是:"+thirdIndex);//输出信息
}
public int lastIndexOf(String str)
a.lastIndexOf(str);
a:任意字符串
str:要搜索的字符串
public static void main(String[] args) {
String str="Let it go!Let it go!";//创建字符串对象
int gIndex=str.lastIndexOf("g");//返回“g”最后一次出现的位置
int goIndex=str.lastIndexOf("go");//返回“go”最后一次出现的位置
int oIndex=str.lastIndexOf("o");//返回“o”最后一次出现的位置
System.out.println("字符串\"Let it go!Let it go!\"中:\n");//输出信息
System.out.println("\"g\"最后一次出现的位置是:"+gIndex);//输出信息
System.out.println("\"o\"最后一次出现的位置是:"+oIndex);//输出信息
System.out.println("\"go\"最后一次出现的位置是:"+goIndex);//输出信息
}
lastIndexOf(str,fromIndex)
a.lastIndexOf(str,fromIndex);
a:任意字符串
str:要搜索的子字符串
fromIndex:开始搜索的索引位置
public static void main(String[] args) {
String str="01a3a56a89";//定义一个字符串
int lastIndex=str.lastIndexOf("a");//返回字母“a”最后一次出现的索引位置返回字母“a”的索引位置otherIndex
int fiveBeforeIndex=str.lastIndexOf("a",5);//满足0<=fiveBeforeIndex<=5条件,在满足条件的结果集中,返回最大的数字
int threeBeforeIndex=str.lastIndexOf("a",3);//满足0<=threeBeforeIndex<=3条件,在满足条件的结果集中,返回最大的数字
System.out.println("字符串\"a\"最后一次出现的位置是:"+lastIndex);//输出信息
System.out.println("从索引位置5开始往回搜索,字母\"a\"最后一次出现的位置:"+fiveBeforeIndex);//输出信息
System.out.println("从索引位置3开始往回搜索,字母\"a\"最后一次出现的位置:"+threeBeforeIndex);//输出信息
}
- 3.4判断字符串首尾内容
starts With()方法和endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都是boolean类型
startsWith(String prefix)
str.startsWitn(prefix);
str:任意字符串
prefix:作为前缀的字符串
public static void main(String[] args) {
String myDream1="我有一个梦想,幽谷上升,高山下降;";//前半句
String myDream2="坎坷曲折之路成坦途,圣光披露,满照人间。";//后半句
//打印整句话
System.out.println(myDream1+myDream2+"\n\t\t——马丁.路德金《我有一个梦想》\n");
boolean firstBool=myDream1.startsWith("我有一个梦想");//判断前半句是否以“我有一个梦想”为前缀
boolean secondBool=myDream2.startsWith("我有一个梦想");//判断后半句是否以“我有一个梦想”为前缀
if(firstBool){
System.out.println("前半句是以\"我有一个梦想\"开始的。");//输出信息
}else if(secondBool){
System.out.println("后半句是以\"我有一个梦想\"开始的。");//输出信息
}else{
System.out.println("没有以\"我有一个梦想\"开始的。");//输出信息
}
}
startsWitn(String prefix,int toffset)
str.startsWitn(prefix,index);
str:任意字符串
prefix:作为前缀的字符串
index:开始查找的位置。
public static void main(String[] args) {
String str="床前明月光,疑是地上霜。\n举头望明月,低头思故乡。";//创建字符串对象
System.out.println("《静夜思》\n"+str+"\n");//打印古诗
int enterIndex=str.indexOf("\n");//返回换行符所在的位置
test10 test10 = new test10();
boolean flag=str.startsWith("举",enterIndex+1);//返回从换行之后开始的子字符串前缀是否为"举"。
if(flag){
System.out.println("第二行是以\"举\"开始的");//输出信息
}else{
System.out.println("第二行是以\""+str.charAt(enterIndex+1)+"\"开始的");//输出信息
}
}
endsWitn(String suffix)
str.endsWitn(suffix);
str:任意字符串
subffix:指定的后缀字符串
public static void main(String[] args) {
String str1="你说完了吗?";//定义一个字符串并赋值
String str2="我说完了。";//定义一个字符串并赋值
boolean flag1=str1.endsWith("。");//判断str1是否以“。”/结尾
boolean flag2=str2.endsWith("。");//判断str2是否以“。”/结尾
System.out.println("字符串str1是以句号结尾的吗?"+flag1);//输出信息
System.out.println("字符串str2是以句号结尾的吗?"+flag2);//输出信息
}
- 3.5获取字符数组
str.tocharArray();
public static void main(String[] args) {
String str="这是一个字符串";//创建一个字符串
char[]ch=str.toCharArray();//将字符串转换成字符数组
for(int i=0;i
- 3.6判断子字符串是否存在
str.contains(String);
public static void main(String[] args) {
String str="今天的菜单有:蒸羊羔,蒸熊掌,蒸鹿尾。烧花鸭,烧雏鸡,烧子鹅,卤煮咸鸭,酱鸡,腊肉,松花小肚。";//创建字符串
System.out.println(str);//输出字符串
boolean request1=str.contains("腊肉");//判断字符串中是否有腊肉的字样
System.out.println("今天有腊肉吗?"+request1);//输出信息
boolean request2=str.contains("汉堡");//判断字符串中是否有汉堡的字样
System.out.println("今天有汉堡吗?"+request2);//输出信息
}
4.字符串 *** 作
- 4.1截取字符串
substring(int beginIndex)
str.substring(beginIndex);
str:任意字符串
beginIndex:起始索引(包括)
public static void main(String[] args) {
String str="为革命保护视力,眼保健 *** 开始!";//创建字符串
String substr=str.substring(8);//从第8位开始截取字符串
System.out.println("字符串str的后半句是:"+substr);//输出信息
}
substring(int beginIndex,int endIndex)
str.substring(beginIndex,endIndex);
str:任意字符串
beginIndex:起始索引(包括)
endIndex:结束索引(不包括)
public static void main(String[] args) {
String str="闭门造车,出门合辙。";//定义一个字符串并赋予初值
String substr=str.substring(0,4);//从0开始(即从头开始)截取至4-1索引位置的子字符串
System.out.println("字符串str的前半句是:"+substr);//输出信息
}
- 4.2字符串替换
replace(CharSequence target,CharSequence replacement)
str.replace(oldstr,newstr);
str:任意字符串
olderstr:要被替换的字符序列
newstr:替换后的字符序列
replace()方法返回的是一个新的字符串。如果字符串str中没有找到被替换的子字符序列oldstr,则将原字符串返回。
public static void main(String[] args) {
String str="明月几时有,把酒问青天";//创建字符串
String restr=str.replace("月", "日");//将月换成日
System.out.println("字符串str替换之后的效果:"+restr);//输出信息
}
replaceAll(String regex,String replacement)
str.replaceAll(regex,replacement);
str:任意字符串
regex:被替换的字符串或正则表达式
replacement:替换后的字符串
正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,“\\d”表示数字0~9中的任何一个,“\\d”就是元字符。
public static void main(String[] args) {
String str="0123456789abc\d";//创建字符串并赋值
String restr=str.replace("\d","?");//使用replace()的方法把符合\d的表达式替换成?
String restrAll=str.replaceAll("\d","?");//使用replaceAll()的方法把符合\d的表达式替换成?
System.out.println("字符串str:"+str);//输出信息
System.out.println("使用replace()替换的结果:"+restr);//输出信息
System.out.println("使用replaceAll()替换的结果:"+restrAll);//输出信息
}
replaceFirst(String regex,String replacement)
str.replaceFirst(regex,replacement);
str:任意字符串
regex:第一个被替换的字符串或正则表达式。
replacement:替换后的字符串
public static void main(String[] args) {
String str="8I want to marry you,so I need you!";//创建字符串并赋值
String noNumber=str.replaceFirst("\d", "");//将开头的数字替换成两个双引号
String youToHer=noNumber.replaceFirst("you", "her");//将第一个you替换成her
System.out.println("替换之后的结果是:"+youToHer);//输出信息
}
- 4.3字符串分割
split(String regex)
该方法可根据给定的分隔符对字符串进行拆分,支持正则表达式,最后返回一个字符串数组。语法如下:
str.split(regex);
str:任意字符串
regex:分隔符表达式
public static void main(String[] args) {
String str="从前有座山,山里有个庙,庙里有个小松鼠";//定义一个字符串
String[]strArray=str.split(",");//让字符串按照“,”进行分割
for(int i=0;i
如果想定义多个分隔符,可以使用符号“|”。如果用“|”分割字符串,需要使用转义字符“\\|”。
public static void main(String[] args) {
String str="a1b2,c,d e f|gh";//创建字符串,包含多种类型字符
String[]a1=str.split(",");//使用“,”分割
String[]a2=str.split(" ");//使用空格分割
String[]a3=str.split("\|");//使用“|”分割
String[]a4=str.split("\d");//使用正则表达式分割,本行用数字分割
String[]a5=str.split(",| |\||\d");//同时使用所有分隔符
System.out.println("str的原值:["+str+"]");//输出信息
System.out.print("使用\",\"分割:");//输出信息
for(String b:a1){//使用for-each循环展示数字分割的结果
System.out.print("["+b+"]");//输出结果
}
System.out.println();//换行
System.out.print("使用空格分割:");//输出结果
for(String b:a2){//使用for-each循环展示数字分割的结果
System.out.print("["+b+"]");//输出结果
}
System.out.println();//换行
System.out.print("使用\"|\"分割:");//输出结果
for(String b:a3){//使用for-each循环展示数字分割的结果
System.out.print("["+b+"]");//输出结果
}
System.out.println();//换行
System.out.print("使用数字分割:");//输出结果
for(String b:a4){//使用for-each循环展示数字分割的结果
System.out.print("["+b+"]");//输出结果
}
System.out.println();//换行
System.out.print("同时使用所有分隔符:");//输出结果
for(String b:a5){//使用for-each循环展示数字分割的结果
System.out.print("["+b+"]");//输出结果
}
System.out.println();//换行
}
split(String regex,int limit
该方法可根据给定的分隔符对字符串进行拆分,并限定拆分的次数,支持正则表达式
str.split(regex,limit);
str:任意字符串
regex:分隔符表达式
limit:限定的分割次数
public static void main(String[] args) {
String str="192.168.0.1";//创建字符串
String[]firstArray=str.split("\.");//按照“.”进行分割
String[]secondArray=str.split("\.",2);//按照“.”进行两次分割
System.out.println("str的原值为:["+str+"]");//输出str原值
System.out.print("全部分割的结果:");//输出信息
for(String a:firstArray){//使用foreath的方法遍历数组
System.out.print("["+a+"]");//输出信息
}
System.out.println();//换行
System.out.print("分割两次的结果:");//输出信息
for(String a:secondArray){//使用foreath的方法遍历数组
System.out.print("["+a+"]");//输出信息
}
System.out.println();//换行
}
- 4.4大小写转换
toLowerCase()
str.toLowerCase();
str:任意字符串
toUpperCase()
str.toUpperCase();
public static void main(String[] args) {
String str="abc DEF";//创建字符串
System.out.println(str.toLowerCase());//按照小写格式输出
System.out.println(str.toUpperCase());//按照大写格式输出
}
- 4.5去除空白内容
trim()方法可以返回字符串的副本,忽略首位空白。
str.trim();
public static void main(String[] args) {
String str=" abc ";//创建字符串
String shortStr=str.trim();//忽略空白
System.out.println("str的原值是:["+str+"]");//输出信息
System.out.println("去掉首位空白的值:["+shortStr+"]");//输出信息
}
去除字符串所有的空白内容。
public static void main(String[] args) {
String str="a b cd e f g ";//创建字符串
String shortstr=str.replaceAll("\s", "");//将字符串中的空白内容替换成“”
System.out.println("str的原值是:["+str+"]");//输出信息
System.out.println("删除空内容之后的值是:["+shortstr+"]");//输出信息
}
- 4.6比较字符串是否相等
对字符串对象进行比较不能简单地使用比较运算符“==”,因为比较的是两个字符串的内存地址是否相同。因为即使两个字符串的文本值相同,两个对象的内存地址也可能不同,所有使用比较运算符会返回false.
public static void main(String[] args) {
String tom,jerry;//定义两个字符串
tom="I am a student";//给字符串赋值
jerry="I am a student";//给字符串赋值
System.out.println("直接引入字符串常量的比较结果:"+(tom==jerry));//输出tom==jerry返回的值
tom=new String("I am a student");//创建一个字符串并赋值
jerry=new String("I am a stuent");//创建一个字符串并赋值
System.out.println("使用new创建对象的比较结果:"+(tom==jerry));//输出tom==jerry返回的值
}
equals(String str)
将此字符串与指定的对象比较。当且仅当该参数不为null,并且是与此对象表示相同字符序列的String 对象时,结果才为true.
a.equals(str);
a:任意字符串
str:进行比较的字符串
public static void main(String[] args) {
String str1="Hello";//创建字符串
String str2=new String("Hello");//创建字符串
String str3=new String("你好");//创建字符串
String str4=str2;//将str2的值赋予给str4
System.out.println("str1==str2的结果:"+(str1==str2));//输出信息
System.out.println("str1==str3的结果:"+(str1==str3));//输出信息
System.out.println("str1==str4的结果:"+(str1==str4));//输出信息
System.out.println("str2==str4的结果:"+(str2==str4));//输出信息
System.out.println("str1.equals(str2)的结果:"+str1.equals(str2));//输出信息
System.out.println("str1.equals(str3)的结果:"+str1.equals(str3));//输出信息
System.out.println("str1.equals(str4)的结果:"+str1.equals(str4));//输出信息
}
equalsIgnoreCase(String anotherString);
将此字符串对象与指定的对象比较,不考虑大小写
a.equalsIgnoreCase(anotherString);
a:任意字符串
anotherString:进行比较的字符串
public static void main(String[] args) {
String str1="abc";//创建字符串对象,内容全部小写
String str2="ABC";//创建字符串对象,内容全部为大写
System.out.println("区分大小写的结果:"+str1.equals(str2));//比较两个字符串的内容是否相等
System.out.println("不区分大小写的结果:"+str1.equalsIgnoreCase(str2));//比较两个字符串的内容是否相等,不区分大小写
}
- 4.7格式化字符串
str.format(String format,Object...args);
format:格式字符串
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0.
import java.util.Date;//导入java.utill.Date类
public class test27 {
public static void main(String[] args) {
Date date=new Date();//创建Date对象date
String year=String.format("%tY", date);//将date进行格式化
String month=String.format("%tB", date);//将date进行格式化
String day=String.format("%td", date);//将date进行格式化
System.out.println("今年是:"+year+"年");//输出信息
System.out.println("现在是:"+month);//输出信息
System.out.println("今天是:"+day+"号");//输出信息
}
}
import java.util.Date;
public class test28 {
public static void main(String[] args) {
Date date=new Date();
String hour=String.format("%tH", date);
String minute=String.format("%tM", date);
String second=String.format("%tS", date);
System.out.println("现在是:"+hour+"时"+minute+"分"+second+"秒");
}
}
import java.util.Date;//导入java.util.Date类
public class test30 {
public static void main(String[] args) {
Date date=new Date();//创建Date对象date
String time=String.format("%tc", date);//将date格式化
String form=String.format("%tF", date);//将date格式化
System.out.println("全部的时间信息是:"+time);//输出信息
System.out.println("年-月-日格式:"+form);//输出信息
}
}
public class test31 {
public static void main(String[] args) {
String str1=String.format("%c",'X');//输出字符
System.out.println("字母x的大写:"+str1);//输出信息
String str2=String.format("%d",1251+3950);//输出数字
System.out.println("1251+3950的结果是:"+str2);//输出信息
String str3=String.format("%.2f",Math.PI);//输出小数点后两位
System.out.println("n取两位小数点:"+str3);//输出信息
String str4=String.format("%b",2<3);//输出布尔类型
System.out.println("2<3的结果是:"+str4);//输出信息
String str5=String.format("%h",3510);//输出哈希散列码,等同于Integer.toHexString(3510)
System.out.println("3510的hashCode值:"+str5);//输出信息
String str6=String.format("%o", 33);//输出8进制
System.out.println("33的8进制结果是:"+str6);//输出信息
String str7=String.format("%x", 33);//输出16进制
System.out.println("33的16进制结果是:"+str7);//输出信息
String str8=String.format("%e", 120000.1);//输出科学计数法
System.out.println("120000.1用科学计数法表示:"+str8);//输出信息
String str9=String.format("%a",40.0);//输出带有效位数和指数的16进制浮点值
System.out.println("40.0的16进制浮点值:"+str9);//输出信息
System.out.println(String.format("天才是由%d%%的灵感,%d%%的汗水",1,99));//输出百分号和数字
}
}
public class test32 {
public static void main(String[] args) {
String str1=String.format("%5d", 123);//让字符串输出的最大长度为5,不足长度在前端补空格
System.out.println("输出长度为5的字符串|"+str1+"|");//输出信息
String str2=String.format("%-5d",123);//让字符串左对齐
System.out.println("左对齐|"+str2+"|");//输出信息
String str3=String.format("%#o", 33);//在8进制前加一个0
System.out.println("33的8进制结果是:"+str3);//输出信息
String str4=String.format("%#x", 33);//在16进制前加一个0x
System.out.println("33的16进制结果是:"+str4);//输出信息
String str5=String.format("%+d",1);//显示数字正负号
System.out.println("我是正数:"+str5);//输出信息
String str6=String.format("%+d",-1);//显示数字正负号
System.out.println("我是负数:"+str6);//输出信息
String str7=String.format("% d",1);//在正数前补一个空格
System.out.println("我是正数,前面有空格"+str7);//输出信息
String str8=String.format("% d",-1);//在负数前补一个负号
System.out.println("我是负数,前面有负号"+str8);//输出信息
String str9=String.format("%05d",12);//让字符串输出的最大长度为5,不足长度在前端补0
System.out.println("前面不够的数用0填充:"+str9);//输出信息
String str10=String.format("%,d",123456789);//用逗号分隔数字
System.out.println("用逗号分隔:"+str10);//输出信息
String str11=String.format("%(d",13);//正数无影响
System.out.println("我是正数,我没有括号:"+str11);//输出信息
String str12=String.format("%(d",-13);//让负数用括号括起来
System.out.println("我是负数,我有括号的:"+str12);//输出信息
}
}
5.可变字符串
- 5.1String Buffer 类的常用方法、
创建StringBuffer类
StringBuffer sbf=new StringBuffer();
StringBuffer sbf=new StringBuffer("abc");
StringBuffer sbf=new StringBuffer(32);
append()方法
将参数转换成字符串,将所有字符串中的字符追加到此序列中。
str.append(obj);
sbf:任意StringBuffer对象
obj:任意数据类型的对象,使append()方法都转变成字符串的表示形式。
public static void main(String[] args) {
StringBuffer sbf=new StringBuffer("门前大桥下,");//创建StringBuffer对象
sbf.append("游过一群鸭,");//追加字符串常量
StringBuffer tmp=new StringBuffer("快来快来数一数,");//追加StringBuffer对象
sbf.append(tmp);//追加字符串常量
int x=24678;//定义一个整型常量
sbf.append(x);//追加字符串常量
System.out.println(sbf.toString());//输出
}
setCharAt(int index,char ch)方法
将给定索引处的字符修改成ch.
sbf.setCharAt(index,ch);
sbf:任意StringBuffer对象
index:被替换字符的索引
ch:替换后的字符
public static void main(String[] args) {
StringBuffer sbf=new StringBuffer("0123456");//创建StringBuffer对象
System.out.println("sbf的原值是:"+sbf);//输出信息
sbf.setCharAt(3, 'A');//将索引为3的字符改成‘A’
System.out.println("修改后的值是:"+sbf);//输出信息
}
insert(int offset,String str)方法
将字符串插入此字符序列中
sbf.insert(offset,str);
sbf:任意StringBuffer对象
offset:插入的索引
str:插入的字符串
public class test35 {
public static void main(String[] args) {
StringBuffer sbf=new StringBuffer("0123456");//创建StringBuffer对象
System.out.println("sbf的原值为:"+sbf);//输出信息
sbf=sbf.insert(5, "F");//在索引为5的位置插入“F”,将返回值赋给sbf自己
System.out.println("修改之后的值为:"+sbf);//输出信息
}
}
sbf.reverse();方法
public static void main(String[] args) {
StringBuffer sbf=new StringBuffer("同一个世界,同一个梦想");//创建一个StringBuffer对象
System.out.println("sbf的原值为:"+sbf);//输出信息
sbf=sbf.reverse();//将字符序列sbf反转
System.out.println("修改之后的值为:"+sbf);//输出信息
}
sbf.delete(start,end);
sbf:任意StringBuffer对象
start:起始索引
end:结束索引
public static void main(String[] args) {
StringBuffer sbf=new StringBuffer("天行健,君子以自强不息");//创建StringBuffer对象
System.out.println("sbf的原值为:"+sbf);//输出信息
sbf=sbf.delete(4, 7);//删除从索引4开始至索引7之前的内容
System.out.println("删除之后的值为:"+sbf);//输出信息
}
其他方法:
public static void main(String[] args) {
StringBuffer sbf=new StringBuffer("ABCDEFG");//创建字符串序列
int lenght=sbf.length();//获取字符串序列的长度
char chr=sbf.charAt(5);//获取索引为5的字符
int index=sbf.indexOf("DEF");//获取DEF字符串所在的索引位置
String substr=sbf.substring(0,2);//截取从索引0开始至索引2之间的字符串
StringBuffer tmp=sbf.replace(2, 5, "1234");//将从索引2开始至索引5之间的字符序列替换成“1234”
System.out.println("sbf的原值为:"+sbf);//输出信息
System.out.println("sbf的长度为:"+lenght);//输出信息
System.out.println("索引为5的字符为:"+chr);//输出信息
System.out.println("DEF字符串的索引位置为:"+index);//输出信息
System.out.println("索引0开始至索引2之间的字符串:"+substr);//输出信息
System.out.println("替换后的字符串为:"+tmp);//输出信息
}
- 5.2String Builder 类的使用方法
public static void main(String[] args) {
StringBuffer sbd=new StringBuffer();//创建一个StringBuffer对象
System.out.println("sbd的原值为空");//输出信息
sbd.append("我是StringBuffer类");//追加字符串
System.out.println("sbd追加字符串:"+sbd);//输出信息
int length=sbd.length();//获取sbd字符串的长度
System.out.println("sbd的长度为:"+length);//输出信息
sbd=sbd.insert(length-1, "123456");//插入字符串
System.out.println("插入字符串:"+sbd);//输出
sbd=sbd.delete(sbd.length()-1,sbd.length());//删除字符串
System.out.println("删除最后一个字:"+sbd);//输出
sbd=sbd.reverse();//反序输出
System.out.println("反序输出:"+sbd);//输出
}
StringBuffer、StringBuilder、String之间的相互转换
public static void main(String[] args) {
String str="String";//创建一个字符串
StringBuffer sbf=new StringBuffer(str);//String转换成StringBuffer
StringBuilder sbd=new StringBuilder(str);//String转换成Stringbuilder
str=sbf.toString();//StringBuffer转换成String
str=sbd.toString();//StringBuilder转换成String
StringBuilder bufferTobuilder=new StringBuilder(sbf.toString());//StringBuffer转换成StringBuilder
StringBuffer buliderToBuffer=new StringBuffer(sbf.toString());//StringBuilder转换成StringBuffer
}
public static void main(String[] args) {
String str="";
long starTime=System.currentTimeMillis();
for(int i=0;i<10000;i++){
str=str+i;
}
long endTime=System.currentTimeMillis();
long time=endTime-starTime;
System.out.println("String循环1万次消耗时间:"+time);
StringBuilder builder=new StringBuilder("");
starTime=System.currentTimeMillis();
for(int j=0;j<10000;j++){
builder.append(j);
}
endTime=System.currentTimeMillis();
time=endTime-starTime;
System.out.println("StringBuilder循环1万次消耗时间:"+time);
StringBuilder builder2=new StringBuilder("");
starTime=System.currentTimeMillis();
for(int j=0;j<10000;j++){
builder2.append(j);
}
endTime=System.currentTimeMillis();
time=endTime-starTime;
System.out.println("StringBuilder循环5万次消耗时间:"+time);
}
- 5.3String Buffer ,String Builder , String 间关系
类名 | String | String Builder | String Buffer |
对象类型 | 字符串常量 | 字符串变量 | 字符串变量 |
线程安全性 | 不安全 | 不安全 | 安全 |
执行效率(大部分情况) | 低 | 高 | 中 |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)