常用类String、正则表达式、

String

String引用类型和字符串常量

String s =“abc”;

"abc"被双引号包裹的内容,是字符串常量(字面值),存放于字符串常量池,不可修改值,是共享的;
String s 的s是字符串类对象,是引用变量,存放于堆,可以指向其他地址;

String类常用方法

以下没有任一方法可以改变String对象的值,因为指向的地址不变的,调用方法只是返回一个方法调用后的结果,并没有将返回结果重新赋值给对象本身

  • charAt()

  • length()

  • indexOf(“aaa”)
    返回参数字符串第一次出现的下标(4种重载;找不到返回-1;int基本都是指起始下标(查找范围含下标)、ASCII码值)

  • lastIndexOf(“aaa”)
    返回从后向前查找参数字符串第一次出现的下标(4种重载;找不到返回-1;int基本都是指起始下标(查找范围含下标,注意!从起始下标往前找)、ASCII码值)

  • equals(“aaa”)
    比较对象与参数的字面值

  • equalsIgnoreCase(“aaa”)
    忽略大小写,比较对象与参数的字面值

  • startWith(“aaa”)
    判断对象的开始字符的字面值是否与参数相等

  • endWith(“aaa”)
    判断对象的结束字符的字面值是否与参数相等

  • getBytes()
    返回对象中每个字符的ASCII值组成的字节数组

  • toCharArray()
    返回对象中每个字符组成的char数组

  • toUpperCase()
    返回对象的全大写形式

  • toLowerCase()
    返回对象的全小写形式

  • subString(int a)
    从指定下标a位置截取到最后一个(含a含结尾)

  • subString(int a,int b)
    从指定下标a位置截取到b位置(含a不含b)

  • Empty()
    返回对象内容是否为空

      String s ="";  ""是空字符串,返回true;
      String s =" ";  " "是含空格的字符串,返回False;
      String s =Null;  Null是不为其分配存储空间,运行时报空指针异常NullPointerException(NULL调用任何方法都会报这个异常)
    
  • compareTo(“aaa”)
    对象与参数位数相同时,从第一位开始比较,第一位不同则返回 对象的第一位的ASCII码值-参数的第一位的ASCII码值 ;第一位相同则判断第二位,返回 对象的第二位的ASCII码值-参数的第二位的ASCII码值 …直到每一位都比完,都一样则返回0;
    对象与参数位数不同时,返回对象与参数的长度之差

  • contains(“aaa”)
    返回是否包含参数字符串

  • replace(“aaa”,“bbb”)
    返回将字符串中的aaa替换为bbb后的新字符串

  • trim()
    去除字符串首尾的所有空白(包含空格和tab制表符)(不能去除字符串内部的)

StringBuffer

一个 线程安全 的可变字符序列,一个类似与String的字符串缓冲区,可以调用方法改变序列的长度和内容。

创建

必须使用构造函数创建,不能直接赋值

	StringBuffer ss=new StringBuffer();//创建一个空字符串
	StringBuffer ss=new StringBuffer("arwq");//arwq字符串
	StringBuffer ss=new StringBuffer(10);//创建一个长度为10的空字符串(长度仍为0,length方法判断的是字符个数)

方法调用

String类型的方法(上文全部)

效果也与String类型相同,即不改变对象本身

StringBuffer特有方法

会改变对象原始值

  • insert(int起始下标,String 要插入的字符串)
    在指定下标的位置放置/插入参数字符串

  • append(String 要拼接的字符串)
    在对象末尾后拼接参数字符串,返回一个StringBuffer
    返回的也是StringBuffer所以可以继续调用方法 即 new StringBuffer(“12”).append(“QE”).append(false) 返回 12QEfalse

  • delete(int a要删除的起始下标,int b要删除的末尾下标)
    删除从a到b位置的字符,不包括b

  • deleteCharAt(int 要删除的下标)

  • SetCharAt(int 要设置的下标,char 要更换的字符)

  • reverse() 倒序

StringBuilder

与StringBuffer有相同的API,用法完全一样,只有在考虑线程安全和效率的情况下不同:

安全性运行速度应用场景
StringBuffer多线程,必须注重线程同步
StringBuilder×单线程,不存在线程安全问题
—参考:网络编程中的协议—
UDP×在线视频,不怕丢掉一些帧
TCP下载,但凡丢掉一些内容都可能无法使用下载的内容

正则表达式

使用场景

针对字符串匹配、切割、替换、查找

匹配:登录场景使用

  • 经典方式

      创建pattern对象,绑定指定正则
      		pattern p =Pattern.compile("a*b");
      调用pattern对象的匹配方法,创建匹配器对象
      		Matcher m = p.matcher();
      调用匹配器对象的匹配方法,返回布尔值(是否匹配)
      		boolean b = m.macthes();
    
  • 简便方式

      "数据源".matches(“正则”)
      返回一个Boolean值
    
匹配符号含义
直接放字符放的字符必须出现且在对应位置
..号代表任意字符,前面加\或者用[]包裹则表示为"."字符
**号前面的字符出现0次或多次
??号前面的字符出现1次或0次
++号前面的字符出现1次或多次
\\b\\b号表示单词边界,可以识别!,空格。句子首尾等单词边界
[0-9]在中括号内的范围(0到9)挑一个
[0-9a-zA-z]在中括号内的范围(0到9或a到z或A到Z)挑一个
{10}{}前的部分出现次数必须为10
{5,}{}前的部分最少出现次数为5,最多出现次数不限
{5,10}{}前的部分最少出现次数为5,最多出现次数为10
示例邮箱规则:不能0开头,6-12位,纯数字
[1-9a-zA-z][0-9a-zA-z]{3,7}@[0-9a-zA-z]{2,7}\.com
[首位不为0的数字或字母][3-7位任意的数字或字母]@[2-7位任意的数字或字母].(转义避免表示通配)com

切割:用于提取数据(切割网址、文章等)

	"数据源".split(“正则”)
	返回一个字符串数组
public static void main(String[] args) {
		String s1="wqji++x217@+++nm,,.c+im";
		System.out.println(Arrays.toString(s1.split("\\++")));//[wqji, x217@, nm,,.c, im]
	}

替换:

public static void main(String[] args) {
		String s1="wqji++x217@+++nm,,.c+im";
		System.out.println(s1.replaceAll("\\++", "*"));//wqji*x217@*nm,,.c*im
	}

查找:

	String s1="ohh,today is thursday,i see you,can we play?";
		Pattern p1=Pattern.compile("\\b[a-z]{3}\\b");
		Matcher m1=p1.matcher(s1);
		
		while (m1.find()) {
			System.out.println(m1.group());//ohh  see  you  can
		}

捕获(待了解)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值