博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大家一起和snailren学java-(13)字符串
阅读量:6113 次
发布时间:2019-06-21

本文共 1904 字,大约阅读时间需要 6 分钟。

  “好久没有写这个系列了。其实也有在看,不过觉得一些很基本的都写上来没意思。现在打算的是将整本书看完后,最后整合为一篇blog,筛选出一些平时没有注意到的或者更深入的理解”

 

  在写程序中,字符串String的操作是非常多的。在平时用字符串就只用了一部分特性。这次我们来看看关于字符串主要有哪些操作方式。主要从以下几个方面讲解:String本身特性、String格式化输出、正则表达式、扫描输入类Scanner类。

一、String

  我们在定义一个String对象的时候,比如String test = "snailren is so handsome".在以前我们就讲过,字符串的内容保存在静态存储区,test对象在堆。因此我们无法对String的内容进行修改。其他的String方法都是新创建的一个String。

  在Java中,没有C++中的那种重载运算符(好开心)。仅仅就只有“+”和“+=”进行了重载。这两个重载非常好理解,可以用于String类型的连接。在连接字符串的时候,java编译器在实现的时候新建了一个StringBuilder类,调用该对象的append方法来实现的“+”的效果。

  对于String、StringBuffer、StringBilder的选择,可以参考如下:“引用:

当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。 对于三者使用的总结:1.如果要操作少量的数据用 = String                     2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder                     3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer” 二、String格式化输出   Java的格式化输出是通过java.util.Formatter类控制的。可以通过format()方法控制输出的格式(System.out.formate),如占用长度,保留位数等等。Fromatter可以接受多个输出目的地,可以讲格式化后的字符串输出到其他地方。   在java的输出类型转换中,可以通过格式化输出进行类型转换。需要注意的第一点是,对于“b”转换,非boolen类型或者Boolen的对象,只要不为空,都为true,包括0。 三、正则表达式   在java中,提供了有限的几种正则表达式工具,如split,relpace,compare等。   在使用时,可以简单的通过String.matches()来对字符串进行简单的正则匹配。split方法可以利用正则表达式来构建分割字符串的标志,同时也能限制匹配的数量。这里我们就不具体讨论如何编写正则表达式。推荐《精通正则表达式》进行学习。   假如我们需要利用一个正则表达式,对多个不同的字符串进行匹配(多次使用匹配规则),那我们最好生成一个正则表达式对象。Pattern类可以编译生成一个正则表达式对象,通过matcher方法,生成一个Matcher对象,用Matcher对象进行操作,就可以有很多方法可以用。比如可以对多行进行批评,通过设置Pattern标记,可以选择不同的匹配模式等等。这里就不细讲了,需要用到的时候再去查资料。   当要用同一个matcher对不同的字符串进行匹配是,通过Matcher.reset()方法可以转换不同的匹配对象,而不用每个匹配对象都生成一个matcher。这样会有一定的性能优化。 四、扫描输入Scanner类   Scanner类的一个特点就是可以接收来自不同的数据源的数据,如File,InputStream,String,Readable对象等等,通过读取数据元,可以按照数据类型读入。如nextInt,next等等。这样就不用我们在读入字符后再自己再判断数据类型。   同样的,我们可以通过设置Scanner的定界符来分隔数据,默认以空白分割,可以通过设置正则表达式来分割。一般在对于数据比较复杂的情况下(如日志文件),通过设置自定义的分割可以方便的提取数据。 最后,提一下,现在基本不用StringTokenizer来进行分词了

转载于:https://www.cnblogs.com/ren-jie/p/5384633.html

你可能感兴趣的文章
泛娱乐时代:新娱乐方式渐成主流
查看>>
SHOP++页面缓存的配置方法
查看>>
win7安装virtualbox遇到的问题
查看>>
装饰器 使用@property
查看>>
centos 下yum命令无法正常安装docker问题
查看>>
kubernetes API 访问控制在阿里云容器服务(ACK)上的实践
查看>>
SharePoint 2010 文档管理(三)过期归档工具
查看>>
linux sendmail
查看>>
我的友情链接
查看>>
CentOS 6配置本地YUM源
查看>>
我的友情链接
查看>>
Linux启动流程图解
查看>>
复合赋值语句妙用(a := c):判断结果为null则指定其它值或变量
查看>>
类初始化过程
查看>>
C语言常用小例子
查看>>
我的友情链接
查看>>
javascipt 中this的学习小节
查看>>
IOS开发之相册拾取器UIImagePickerController
查看>>
物化视图初窥
查看>>
NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D)
查看>>