Java字符串相关

本文深入探讨了Java中String、StringBuilder和StringBuffer的特性及应用场景,对比了它们在字符串操作上的性能差异,同时介绍了正则表达式的基础概念与Pattern、Matcher类的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String、StringBuilder和StringBuffer

String:

String的底层代码为一个用final修饰的char数组,这意味着定义一个String变量以后,该变量的内容是不可变的;

每次对 String 类型进行改变时,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。

StringBuilder与StringBuffer:

StringBuilder 与StringBuffer都继承自AbstractStringBuilder,该类的char数组并没有用final修饰,内容是可变的;

通过底层代码可知,StringBuilder 与StringBuffer在拼接字符串时,通过判断字符串长度是否足够,从而创建一个新的数组用来封装数据,而原来的对象被放弃引用,等待垃圾回收,从而减少内存的浪费,因此在拼接字符串等操作时,我们通常使用StringBuilder 与StringBuffer,但两者在执行效率上又有不同,StringBuilder的执行效率较高;

通过底层源码可知,可以发现StringBuffer在拼接字符串时,使用了同步锁,安全性提高,而StringBuilder未使用同步锁,故效率提高;

StringBuilder是线程不安全的,而StringBuffer是线程安全的。

String:适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

正则表达式

基本概念:

正则表达式是一种文本处理工具。利用正则表达式,我们能够以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索。正则表达式就是以某种方式来描述字符串。

正则表达式的创建:

Pattern和Matcher:

Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式;

pattern() 返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数 。

Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例;

Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作。

Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持.;

示例:

Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 

扫描输入

Scanner:

这是一个用于扫描输入文本的实用类。可以看做StringTokenizer和Matcher类之间的某种结合。有了Scanner,所有的输入、分词和翻译的操作都隐藏在不同类型的next方法中。

在默认的情况下,Scanner根据空白字符对输入进行分词,但是也可以用正则表达式指定自己所需的定界符。

next()方法 与 nextLine() 方法区别

next():

  • 1、一定要读取到有效字符后才可以结束输入。
  • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 2、可以获得空白。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值