第五章总结

1.声明字符串:字符串是常量,它可以显示任何文字信息,字符串的值在创建之后就不能更改。

String a;
String a,b;

注意:在不给字符串变量赋值的情况下,默认值为null(空),就是空对象,如果此时调用String的方法会发生空指针异常。

2.创建字符串

String a="时间就是金钱,我的朋友。";
String b="锄禾日当午",c="小鸡炖蘑菇";
String str1,str2;
str1="We are students";
str2="We are students";

3.利用构造方法实例化

String a=new String("我爱清汤小肥羊");
String b=new String(a);

4.利用字符数组实例化

char[] charArray=('t','i','m','e');
String a=new String(charArray);

5.提取字符数组中的一部分创建字符串对象

char[] charArray=('时','间','就','是','金','钱');
String a=new String(charArray,3,2);
public class test1 {
	public static void main(String[]args){
		String a="时间就是金钱,我的朋友。";//直接引用字符串常量
		System.out.println("a="+a);//输出信息
		String b=new String("我爱清汤小肥羊");//利用构造方法实例化
		String c=new String(b);//使用已有字符串变量实例化
		System.out.println("b="+b);//输出信息
		System.out.println("c="+c);//输出信息
		char[]charArray={'t','i','m','e'};//定义一个char类型的数组并赋予初值
		String d=new String(charArray);//利用字符数组实例化
		System.out.println("d="+d);//输出信息
		char[]charArray2={'时','间','就','是','金','钱'};//定义一个char 类型数组并赋予初值
		String e=new String(charArray2,4,2);//提取字符数组部分内容,从下标为4的元素开始,截取2个字符
		System.out.println("e="+e);//输出信息
		
	}

}

6.连接字符串:使用“+”运算符可实现拼接多个字符串的功能,除了“+”运算符,“+=”同样可以实现字符串拼接

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中相连的字符串不可以直接分成两行

String自带的concat()方法可以实现将指定字符串连接到此字符结尾的功能

a.concat(str);

7.连接其他数据类型

public static void main(String[] args) {
		int booktime=4;//声明int型变量booktime
		float practice=2.5f;//声明float型变量practice
		System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");//输出信息
	}

注意:只有“+”运算符的一个操作数是字符串,编译器就会将另一个操作数转换成字符串形式,所以应谨慎地将其他数据类型与字符串相连,以免出现意想不到的结果。

System.out.println("我每天花费"+booktime+"小时看书"+(practice+booktime)+"小时上机练习");

8.获取字符串长度

length()方法返回采用UTF-16的编码表示字符的数量,也就是char的数量,语法如下:

str.length();

注意:字符串的length()方法与数组的length虽然都是用来获取长度的,但两者却有些不同。String的length()是类的成员方法,是有括号;数组的length是一个属性,是没有括号的。

9.获取指定的字符

str.charAt(index);

str:任意的字符串对象

index:char值的索引

public static void main(String[] args) {
		String str="床前明月光,疑是地上霜。";//定义一个字符串
		char chr=str.charAt(4);//将字符串str中索引位置为4的字符赋值给chr
		System.out.println("字符串中索引位置为4的字符是:"+chr);//输出chr

	}

10.获取子字符串索引位置:String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。indexOf()方法返回的是搜索的字符串或字符首次出现的位置,lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。

1.indexOf(String str)

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,就执行此代码
	}

	}

注意:如果参数是一个字符串,返回的结果是字符串第一个字母所在位置

2.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);//输出信息
	}

3.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);//输出信息
		
		
	}

4.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);//输出信息

	}

11.判断字符串首尾内容

starts With()方法和endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都是boolean类型。

1.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("没有以\"我有一个梦想\"开始的。");//输出信息
}
	}

2.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)+"\"开始的");//输出信息
	}

}	

3.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);//输出信息

	}

12.获取字符数组

str.tocharArray();

public static void main(String[] args) {
	String str="这是一个字符串";//创建一个字符串
	char[]ch=str.toCharArray();//将字符串转换成字符数组
	for(int i=0;i<ch.length;i++){//遍历数组
		System.out.println("数组第"+i+"个元素为:"+ch[i]);//输出数组的元素
	}
	}

13.判断子字符串是否存在

str.contains(String);

str:任意字符串

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);//输出信息
	}

14.截取字符串

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);//输出信息
		
	}

2.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);//输出信息

	}

15.字符串替换

1.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);//输出信息

	}

2.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);//输出信息
	}

3.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);//输出信息

	}

 16.字符串分割

1.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<strArray.length;i++){//使用for循环,循环输出数字所有元素
			System.out.println("数组第"+i+"索引的元素是:"+strArray[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();//换行
	}

2.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();//换行
	}

 17.大小写转换

1.toLowerCase()

str.toLowerCase();

str:任意字符串

2.toUpperCase()

str.toUpperCase();

	public static void main(String[] args) {
		String str="abc DEF";//创建字符串
		System.out.println(str.toLowerCase());//按照小写格式输出
		System.out.println(str.toUpperCase());//按照大写格式输出

	}

 18.去除空白内容

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+"]");//输出信息


	}

19.比较字符串是否相等

对字符串对象进行比较不能简单地使用比较运算符“==”,因为比较的是两个字符串的内存地址是否相同。因为即使两个字符串的文本值相同,两个对象的内存地址也可能不同,所有使用比较运算符会返回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返回的值

	}

1.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));//输出信息
		

	}

2.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));//比较两个字符串的内容是否相等,不区分大小写

	}

20.格式化字符串

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);//输出信息
	

	}

}

21.可变字符串

1.创建StringBuffer类

StringBuffer sbf=new StringBuffer();
StringBuffer sbf=new StringBuffer("abc");
StringBuffer sbf=new StringBuffer(32);

2.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());//输出
	}

3.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);//输出信息

	}

4.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);//输出信息

	}

}

5.reverse()方法

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);//输出信息

	}

6.delete(int start,int end)方法

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);//输出信息
		

	}

21.StringBuilder类使用方法

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);//输出

	}

 22.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);
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值