第十章总结:字符串

10.1:String类

​​​​​​10.1.1:声明字符串:包含在双引号之内

10.1.2:字符串和字符类型的数组有相似之处

char [] ch = {'g','o','o','d'};  

str=new String(ch);

等同于

String s =new String("good");  //底层实现方法


public class Test1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//10.1 String 类
		//字符串变量的声明
		String str;
//		System.out.println(str);
		
		//字符串变量的初始化
		str="你好";
		str=new String("你好");//调用String的构造方法,实现逻辑,底层实现
		System.out.println(str);
		//字符串变量的初始化,传入字符类形的数组,数组里有好多字符,字符串和他相似;
		//定义一个字符类型数组
		char [] ch = {'g','o','o','d'};
		str=new String(ch);//直接传入字符类型的数组
		System.out.println(str);
		//字符串变量的初始化,传入字符类形的数组,两个数字
		char [] c = {'s','t','u','d','e','n','t'};
		str=new String(c,1,3);//数字是前索引和个数
		System.out.println(str);
		
		
		
		
		
	}

}

 10.2:连接字符串

10.2.1  使用+连接运算符可实现连接多个字符串的功能

10.2.2  连接其他数据类型


public class Join {  //创建类

	public static void main(String[] args) {  
		// TODO Auto-generated method stub
		String s1 = new String("春色绿千里");//声明对象
		String s2 = new String("马蹄香万家");
		String s=s1+"\n"+s2;//连接
		System.out.println(s);//输出
		
	}

}
//例题10.1

public class Link {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int booktime=4;
		float practice=2.5f;//
		System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");
	}

}
//例题10.2

10.1和10.2结合代码 


public class Test1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//10.1 String 类
		//字符串变量的声明
		String str;
//		System.out.println(str);
		
		//字符串变量的初始化
		str="你好";
		str=new String("你好");//调用String的构造方法,实现逻辑,底层实现
		System.out.println(str);
		//字符串变量的初始化,传入字符类形的数组,数组里有好多字符,字符串和他相似;
		//定义一个字符类型数组
		char [] ch = {'g','o','o','d'};
		str=new String(ch);//直接传入字符类型的数组
		System.out.println(str);
		//字符串变量的初始化,传入字符类形的数组,两个数字
		char [] c = {'s','t','u','d','e','n','t'};
		str=new String(c,1,3);//数字是前索引和个数
		System.out.println(str);	
		
		
		//10.2 连接字符串
		//字符串相连接
		System.out.println(str + ch);
		//字符串与其他类型相连接
		float f=11.25F;
		int z=3;
		System.out.println(f+str+z);
		
		
	
		
		
		
		
		
		
		
	}

}

10.3:获取字符串信息 

 10.3.1 获取字符串长度

在数组中,用.length,获取长度

10.3.2 字符串查找


public class Text {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "We are students";
			int size =str.lastIndexOf("");//将空字符串在str中的索引位置的值赋给size
			System.out.println("空字符串在字符串str中的索引位置是:"+size);//将变量size输出
			System.out.println("字符串str的长度是:"+str.length());//将字符串str的长度输出。
		
		

	}

}
//例题10.3

第一次出现和最后一次出现的长度

indexOf和last indexOf


public class Test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 10.3 获取字符串信息
		String str ="hellowworld";
		// 获取字符串长度
		int length = str.length();
		System.out.println(length);//获取长度
		//查找字符串中出现该元素的位置。
		//第一次出现的位置
		int indexOf =str.indexOf("l");
		System.out.println(indexOf);
		
		//最后一次出现的位置
		int lastindexOf =str.lastIndexOf("l");
		System.out.println(lastindexOf);
		
		//获取指定索引号的字符
		char charat=str.charAt(3);
		System.out.println(charat);
	}

}

10.3.3 获取指定索引位置的字符

str.charAt

这表示在字符串的第三位的字符是什么。


public class Ref {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str ="hellowworld";//定义字符串为str
		char mychar=str.charAt(6);//将字符串中索引位置为6的字符返回
		System.out.println("字符串str中索引位置是6的字符为:"+mychar);//输出信息
	}

}
//例题10.4

 

10.4:字符串操作 

10.4.1 获取子字符串

str.substring(int beginindex)


public class Subs {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str ="《将进酒》:李白(唐)";
		String substr=str.substring(6,8);//对字符串进行截取
		System.out.println("《将进酒》的作者是:"+substr);//输出截取后的字符串	

}}
//例题10.5

10.4.2 去除空格

str.trim():去除首尾空格


		//去除首尾空格
		String st = " Java   Class ";
		System.out.println(st+ "的长度为"+st.length());
		String trim = str.trim();
		System.out.println(trim+ "的长度为"+trim.length());
		

结合替换 去除

10.4.3 字符串替换

str.replace

//替换字符串
		String s = "address";
		String replace =s.replace("a","A");
		System.out.println(replace);
	


public class Black {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = " Java   Class ";
		System.out.println("字符串原来的的长度为"+str.length());
		String trim = str.trim();
		System.out.println("去掉空格后的长度为"+str.trim().length());
	}

}
//例题10.6


public class NewStr {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "address";
		String newstr =str.replace("a","A");//把a替换
		System.out.println(newstr);//输出
		
		
		
		
	}
	

}
//例题10.7

10.4.4 判断字符串的开始与结尾

startsWith()和endWith()


		//判断字符串的开始与结尾
		String num1="22045612";
		boolean startWith = num1.startsWith("22");
		System.out.println(startWith);
		
		//结尾
		String num2="22045612";
		boolean endsWith = num2.endsWith("12");
		System.out.println(endsWith);
		


public class StartOrEnd {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String num1="22045612";
		boolean b = num1.startsWith("22"); //判断真假
		System.out.println("字符串num1是以22开始的吗?"+b);
		String num2="21304578";
		boolean b2 = num2.endsWith("78");
		System.out.println("字符串num2是以78结尾的吗"+b2);
		
		
		
	}

}
//例题10.8

 

10.4.5 判断字符串是否相等

equals:

equalsIgnoreCase :忽略大小写判断是否相同

public class Opinion {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 =new  String("abc");
		String s2 =new  String("ABC");
		boolean b =s1.equals(s2);
		boolean b2 =s1.equalsIgnoreCase(s2);
		System.out.println(s1+"equals"+s2+":"+b);
		System.out.println(s1+"equals"+s2+":"+b2);

	}

}
//例题10.9

	
		//判断字符串是否相等,开辟空间不同
		String s1 =new  String("abc");
		String s2 =new  String("abc");//没有new string的话指的是常用空间,指向静态
		boolean b1=(s1==s2);//地址不同
		System.out.println(b1);
		boolean b2=s1.equals(s2);//判断内容是否相同
		System.out.println(b2);
		String s3 ="ABC";//忽略大小写所以为真
		boolean b3=s1.equalsIgnoreCase(s2);
		System.out.println(b3);
		
		//12345678910123456X 忽略大小写判断
		//12345678910123456x
		

10.4.6 按字典顺序比较两个字符串
str.compareTo

//10.4.6按照Unicode值比较字符串先后顺序
		String str1 ="a";
		String str2 ="b";
		String str3 ="c";
		System.out.println(str1.compareTo(str2));//前面的和后面相比
		System.out.println(str2.compareTo(str2));//自己和自己相比
		System.out.println(str3.compareTo(str2));//后面和前面比

10.4.7 字母大小写转换

str.toLowerCase()

str.toUpperCase()


		//10.4.7字母大小写转换
		String stri ="MY LOVE";
		String lower = stri.toLowerCase();//全部转换为小写,向下走
		System.out.println(lower );
		String upper = stri.toUpperCase();//全部转换为大写,向上走
		System.out.println(upper);
	

10.4.8 字符串分割

split

//10.4.8字符串的分割
		String strin="192.168.0.1";
		String[] split =strin.split("\\.");//转义,分割为4个部分
		for(String temp: split) {
			System.out.println(temp);	
			
		}
		String[] split2 =strin.split("\\.",2);//数字代表分为两部分,第一个点前面分为一部分
		for(String temp: split2) {
			System.out.println(temp);	

10.5:格式化字符串 

str.format(String):指定格式字符串

str.format(Local):指定语言环境

10.5.1 日期和时间字符串格式化

日期

表10.1 常用的日期格式换符
转换符说明示例
%te一个月中的某一天2
%tb指定语言环境的月份简称Feb(英文)、二月(中文)
%tB指定语言环境的月份全称February(英文)、二月(中文)
%tA指定语言环境的星期几全称Monday(英文)、星期一(中文)
%ta指定语言环境的星期几简称Mon(英文)、星期一(中文)
%tc包括全部日期和时间信息星期二 三月 25 13:37:22CST 2008
%tY4位年份2008
%tj一年中的第几天(001~366)085
%tm月份03
%td一个月中的的第几天02
%ty2位年份08

时间

表10.2 时间格式化转换符
转换符说明示例
%tH2位数字的24时制的小时(00~24)14
%tI2位数字的12时制的小时(01~12)05
%tk2位数字的24时制的小时(00~23)5
%tl2位数字的12时制的小时(01~12)10
%tM2位数字的分钟数(00~59)05
%tS2位数字的秒数(00~60)12
%tL

3位数字的毫秒数(000~999)

920
%tN9位数字的微秒数(000000000~999999999)062000000
%tp指定语言环境下上午或者下午标记下午(中文)pm(英文)
%tz相对于GMTRFC82格式的数字时区偏移量+0800
% tZ时区缩写形式字符串CST
%ts1970-001-01 00:00:00至现在经过的秒数1206426646
%tQ1970-001-01 00:00:00至现在经过的毫秒数106426737453

格式化常见的日期时间组合

表10.3 常见的日期和时间组合的格式
转换符说明示例
%tF“年—月—日”格式(4位年份)2003—11—25
%tD“月/日/年”格式(2位年份)03/25/08
%tc全部日期和时间信息星期五  五月 21 5:20 CST 2003
%tr“时:分:秒 PM(AM)”格式(12小时制)03:22:06   下午

%tT

“时:分:秒”格式(24小时制)15:23:50
%tR“时:分”格式(24小时)15:25

import java.util.Date;

public class Test4 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //10.5 格式化字符串
  //String 格式化后的字符串 = String.format(格式,字符串);
  
  //日期和时间字符串的格式化
  Date date = new Date();      //默认输出当前的时间
  System.out.println(date);
  //日期
  String year = String.format("%ty",date);
  String month = String.format("%tm",date);
  String day = String.format("%td",date);
  System.out.println(year + "年" + month + "月" + day + "日");
  
  //时间
  String hour = String.format("%tH",date);
  String minute = String.format("%tM",date);
  String second = String.format("%tS",date);
  System.out.println(hour + "时" + minute + "分" + second + "秒");
  
  
	//常用的日期时间格式化
  String formatDate = String.format("%tF", date);
  String formatTime = String.format("%tT", date);
  System.out.println(formatDate + " " + formatTime);
  
  
 }

}

10.5.2 常规类型格式化

表10.4 常规转换符
转换符说明示例
%b、%B结果被格式化为布尔类型true
%h、%H结果被格式化为散列码A05A5198
%s、%S结果被格式化为字符串类型"abcd"

%c、%C

结果被格式化为字符类型'a'
%d结果被格式化为十进制整数40
%o结果被格式化为八进制整数11
%x、%X结果被格式化为十六进制整数4b1
%e结果被格式化为用计算机科学记数法表示的十进制数1.700000e+01
%a结果被格式化为带有效位数和指数的十六进制浮点制0X1.C00000000000001P4
%n结果为特定于平台的行分隔符
%%结果为字面值“%'%


public class General {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str =String.format("%d",400/2);
		String str2 =String.format("%b",3>5);//将结果以布尔类型展示
		String str3 =String.format("%x",200);
		System.out.println("400的一半是"+str);
		System.out.println("3>5正确吗"+str2);
		System.out.println("200的十六进制数是"+str3);//输出格式化字符串
	}

}
//例题10.16

10.6:使用正则表达式 

表10.5 正则表达式中的元字符
元字符正则表达式中的写法意义
..任意的一个字符
\d\\d0~9的任何一个数字
\D\\D任何一个非数字字符
\s\\s空白字符,如'\t'、'\n'。
\S\\S非空白字符
\w\\w可用于标识符的字符,但不包括“S”
\W\\W不可用于标识符字符
\p(Lower)\\p(Lower)小写字母a~z
\p(Upper)\\p(Upper)大写字母A~Z
\p(ASCII)\\p(ASCII)ASCII字符
\p(Alpha)\\p(Alpha)字母字符
\p(Digit)\\p(Digit)十进制数字,即0~9
\p(Alnum)\\p(Alnum)数字或字母字符
\p(Punct)\\p(Punct)标点符号:
\p(Graph)\\p(Graph)可见字符
\p(Print)\\p(Print)可打印字符
\p(Blank)\\p(Blank)空格或制表符
\p(Cntrl)\\p(Cntrl)控制字符

表10.6 限定修饰符
限定修饰符意义示例限定修饰符意义示例
0次或1次A?{n}正好出现n次A{2}
*0次或多次A*{n,}

至少出现n次

A{3,}
+一次或多次A+{n,m}出现n~m次A{2,6}

matches:匹配


public class Judge {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"; //定义要匹配的E-mail地址的正则表达式
		String str1 ="aaa@";//定义要进行验证的字符串
		String str2 ="aaaa";
		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.17

 

10.7:字符串生成器

 StringBuild类


		public class Jerque {

			 public static void main(String[] args) {
			  // TODO Auto-generated method stub
			  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 消耗时间:"+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 消耗时间:"+time);
			 }

			
	}


//例题10.18

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值