Java第五章总结

目录

5.1 String类

5.1.1 声明字符串

5.1.2创建字符串

5.2 连接字符串

5.2.1 连接字符串

5.2.2 连接其他数据类型

5.3 提取字符串信息

5.3.1 获取字符串长度

5.3.2 获取指定的字符

5.3.3 获取子字符串索引位置

5.3.4 判断字符串首尾内容

5.3.5 获取字符数组

5.3.6 判断子字符串是否存在

5.4 字符串的操作

5.4.1 截取字符串

5.4.2 字符串替换

5.4.3 字符串分割

5.4.4 大小写转换

5.4.5 去除空白内容

5.4.6 比较字符串是否相等

5.4.7 格式化字符串

5.5 可变字符串

5.5.1 StringBuffer 类的常用方法

5.5.2 StringBuffer 类的使用方法

5.5.3 StringBuffer 、StringBuilder、String之间的关系

5.6 小结


5.1 String类

 String a;

String a,b;

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

5.1.1 声明字符串

 字符串是常量它可以显示任何文字信息,字符串的值在创建之后不能更改。在Java语言中,单引号中的内容表示字符,例如's'。而双引号的内容表示字符串,例如,"我是字符串"。

 '  ' 字符        1个

" " 字符串     多个

5.1.2创建字符串

 1.引用字符串常量

String a =  " 建团一百周年"

String b = ''百年校庆",c = "时间就是金钱"

String str1,str2;

str1 = "we are students";

srt2 = "we are students";

2、利用构造方法实例化

String a = new String("建团一百周年")

String b = new String(a);

3、利用字符组实例化

定义一个字符数组charArray,使用该字符数组创建一个字符。代码如下:

char [ ]  charArray = {'t','i','m','e'};

String a = new String(charArray);

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

定义一个字符数组charArray,从该字符数组索引3的位置开始,提取两个元素,创建一个字符串。代码如下:

char[ ] charArray = {'建',''团,'一','百' ,'周' ,'年'};

String a = new String(charArray,3,2);

5.2 连接字符串

连接字符串就是字符串操作中较简单的一种。可以对多个字符串进行连接,也可使字符串与其他数据类型进行连接。

5.2.1 连接字符串

使用 "+" 运算符可实现拼接多个字符串的功能,并产生一个String对象。除了"+"运算符,"+="同样可以实现字符串拼接。

String a = "建团";

String b = "建团一百周年";

b = a + b;     //b = "建团一百周年"

b += a;         //b = b +  a ="建团一百周年"

 字符串是常量,是不可修改的。拼接两个字符串之后,原先的字符串不会发生变化而是在内存在生成一个新的字符串。

5.2.2 连接其他数据类型

String a = "建团";

int b = 100;

String c = "周年";

String d = a + b + c; //d = "建团一百周年"

a += (b+c);

1.b+c ="100周年"

本例实现的是将字符串常量与整型变量booktime和浮点型变量practice相连后的结果出输,booktime和·practice都不是字符串,当他们与字符串连接时会自动调用toString()方法将其转换成字符串形式参与连接。

5.3 提取字符串信息

5.3.1 获取字符串长度

str .  length();   //长度 字符串名 

 例如,定义一个字符串a,使用length()方法获取其长度。代码如下:

String a = " 建团一百周年";

int b = a.length();

 5.3.2 获取指定的字符

charAt(String index)方法可将指定索引处的字符返回。语法如下:

str . charAt(index);

str:任意字符串对象。

index:char值的索引。

5.3.3 获取子字符串索引位置

1、indexOf(String str)

a . indexOf(substr);

a:任意字符串对象

substr:要搜索的字符串

 查找字符e在字符串str中首次出现的索引位置。代码如下:

String str = "we are the world";

int size = str,indexOf('e');    //size的值为1

String a = "";

int b = a.indexOf("a"); //0

int c =  a.IastIndexOf("a") //8

int d = a.indexOf("a", 3); //4

int e = a.lastIdexOf("a" , 7);//6

 2、indexOf(String str, int formIndex)

a.indexOf(str ,formIndex);

formIndex:开始搜索的索引位置

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);

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(String str,int formIndex)

返回指定子字符串在此字符串中最后一次出现的索引,从指定的索引开始反向搜索。

a.lastIndexOf(str, formIndex);

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

}
}

5.3.4 判断字符串首尾内容

String a = "建团一百周年";

Boolean b= a.startwith("建团");//判断是否以建团结尾·

Boolean c  = a.endswith("建团")  // 判断是否以建团开始

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

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

5.3.5 获取字符数组

Char[ ] ch = 字符串名.toCharArray();

String a = "建团一百周年";

Char[ ] ch = a.toCharArray();

5.3.6 判断子字符串是否存在

 Boolean b = 字符串名.contains(子串);

String a = "建团一百周年";

Boolean b = a.contains("一百");

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]);//输出数组的元素
	}

}

5.4 字符串的操作

5.4.1 截取字符串

str.substring(beginIndex,endIndex);

str:任意字符串

beginIndex:起始索引(包括)

endIndex:结束索引(不包括)

 1.substring(int 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)

public static void main(String[] args) {
		String str="闭门造车,出门合辙。";//定义一个字符串并赋予初值
		String substr=str.substring(0,4);//从0开始(即从头开始)截取至4-1索引位置的子字符串
		System.out.println("字符串str的前半句是:"+substr);//输出信息
 

}
   }

 

5.4.2 字符串替换

1、str . replace(oldstr,newstr) //(老,新);

String a = "建团一百周年"

regex:要被替换的字符序列。

replacement:替换后的字符序列。

2、a.replace("团","校");

         repalceAll();

 1.replace(CharSequence target,CharSequence replacement)

public static void main(String[] args) {
		String str="明月几时有,把酒问青天";//创建字符串
		String restr=str.replace("月", "日");//将月换成日
		System.out.println("字符串str替换之后的效果:"+restr);//输出信息
 

}
}

 2.replaceAll(String regex,String replacement)

3.replaceFirst(String regex,String 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);//输出信息
 

}
}

 

5.4.3 字符串分割

该语法可根据给定的分隔符对字符串进行拆分,支持正则表达式,最后返回一个字符串数组。

str.split(regex)

字符串.split(子串<可传正则表达时>,次数):

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

}
}

 


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

5.4.4 大小写转换

大转小:字符串.toLowerCase();

小转大:字符串.toUpperCase();

5.4.5 去除空白内容

字符串.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+"]");//输出信息
 
   }

}

5.4.6 比较字符串是否相等

a ==b            位置

a. equals(b)     值

a.equalsIgnoreCase(b)

 

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返回的值
 
	}
}

public static void main(String[] args) {
		String str1="abc";//创建字符串对象,内容全部小写
		String str2="ABC";//创建字符串对象,内容全部为大写
		System.out.println("区分大小写的结果:"+str1.equals(str2));//比较两个字符串的内容是否相等
		System.out.println("不区分大小写的结果:"+str1.equalsIgnoreCase(str2));//比较两个字符串的内容是否相等,不区分大小写
 
}
  }

 

5.4.7 格式化字符串

String format("转换符",....)

 日期和时间字符串格式化

Date d = new Date

String str = String.format("转换符",d)

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 可变字符串

常规类型格式化

String str = string.format("转换符", . . .)

可变字符串

String

String str = "Hello";

str = "Helloworld";

StringBuffer  有锁  安全  慢

StringBuffer  sbf = new StringBuffer("Hello");

sbf = sbf.append("world");

StringBuilder         不安全   快

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

 

5.5.1 StringBuffer 类的常用方法

追加     字符串名.append(需要追加的值);

设定某一个元素值     字符串名.setCharAt(序号,值);

插入   字符串名.insert(序号,值);

反转   字符串.reverse();

删除   字符串名.delete(前序号,后序号).

5.5.2 StringBuffer 类的使用方法

StringBuffer类和StringBuilder类具有兼容的API,所以两者的使用方法也相同。

5.5.3 StringBuffer 、StringBuilder、String之间的关系

1.区别:

String                             常量                 

StringBuffer                    变量           有锁                    安全             慢

StringBuilder                   变量                                     不安全          快

2、转换:

String ->StringBuffer                           new StringBuffer     对象

String ->StringBuilder                          new  StringBuilder  对象

StringBuffer  ->String                           .toString()方法

StringBuffer->String                              .toString()方法

StringBuffer < - >  String   < - >  StringBuilder

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值