《Java 编程思想》--第十三章:字符串

  1. 字符串操作时计算机程序设计中最常见的行为
  2. String对象是不可变的。String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则丝毫未动
  3. 每把String对象作为方法的参数时,都会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置上,从未动过
  4. 在多个String相加时,编译器会创建一个StringBuilder对象,用以构造最终的String,并为每个字符串调用一次StringBuilder的append()方法,最后调用toString()生成结果
  5. 如果是多个字符串直接相加,而不含String对象,编译器会将其优化,直接生成一个结果字符串
  6. 当对象遇到字符串的加号时,会调用对象的toString()方法,然后与其他字符串相加
  7. 基本方法中,会改变字符串的方法都将返回一个新的String对象
  8. format方法可用于PrintStream和PrintWriter对象,其中也包括System.out对象,format()方法模仿自C的printf(),在System.out中也有printf方法,与format()方法等价
  9. java中所有新的格式化功能都由java.util.Formatter类处理
  10. String.format()是一个和Formatter.format()方法一样的参数,但返回一个String对象,其实在String.format()内部,也是创建一个Formatter对象,然后将传入的参数转给该Formatter
  11. 检查字符串是否匹配某个正则表达式:
    1.   str.match("-?\\d+");
  12. String类还自带split方法,“将字符串从正则表达式匹配的地方切开“
    1. str.split("regex");
  13. 创建完整的正则表达式,查看java.util.regex中的Pattern类
  14. 量词描述了一个模式吸收输入文本的方式:
    1. 贪婪型:量词总是贪婪的,除非有其他的选项被设置。贪婪表达式会为所有可能的模式发现尽可能多的匹配
    2. 勉强型:用问号来指定,这个量词匹配满足模式所需的最少字符数
    3. 占有型:这种类型的量词只有在Java语言中才可用,并且也更高级。当正则表达式被应用于字符串时,它会产生相当多的状态,以便在匹配失败时可以回溯。而占有型量词并不保存这些中间状态,因此他们可以防止回溯。他们常常用于防止正则表达式失控,因此可以使正则表达式执行起来更有效
  15. 若需要使用功能强大的正则表达式,导入java.util.regex包,然后用static 的Pattern.complie()方法来编译正则表达式,根据String类型的正则表达式生成一个Pattern对象,接下来把想要检索的字符串传入Pattern对象的matcher()方法。matcher()方法会生成一个Matcher对象
  16. Matcher中有很多方法
    1. boolean matches() 判断整个字符串是否匹配正则表达式
    2. boolean lookingAt() 判断正则表达式的起始部分是否符合正则表达式
    3. boolean find()可以用来在CharSequence中查找多个匹配
      1. public static void main (String[] args){
        		Matcher m = Pattern.compile("\\w+").matcher("Evening is full of the linnet's wings");
        		while(m.find()){
        			System.out.println(m.group() + " ");
        		}
        	}

    4. boolean find(int start) 能够接受一个整数作为参数,该证书表示字符串中字符的位置,并以其作为搜索的起点
  17. 组是用括号划分的正则表达式,可以根据组的编号来引用某个组
    1. public int groupCount():返回该匹配器的模式中的分组数目,第0组不包括在内
    2. public String group():返回前一次匹配操作的第0组
    3. public String group(int i):返回在第一次匹配操作期间指定的组号,如果匹配成功,但是指定的组没有匹配输入字符串的任何部分,则将会返回null。
    4. public int start(int group):返回在前一次匹配操作中寻找到的组的起始索引
    5. public int end(int group):返回在前一次匹配操作中寻找到的组的最后一个字符索引加一的值
  18. find()可以在任意位置定位正则表达式,而lookingAt()和matches()只有在正则表达式与输入的最考试处开始匹配时才会成功
  19. split()方法将输入字符串断开成字符串对象数组,断开边界由正则表达式确定
    1. String[] split (CharSequence input)
    2. String[] split (CharSequence input, int limit)
  20. 一些文本替换方法:
    1. replaceFirst(String replacement):以参数字符串替换掉第一个匹配成功的部分
    2. replaceAll (String replacement):以参数字符串替换所有匹配成功的部分
    3. appendReplacement (StringBuffer sbuf, String replacement):实行渐进式替换
    4. appendTail (StringBuffer sbuf):执行了一次货多次appendReplacement()方法之后,调用此方法可以将输入字符串余下部分复制到sbuf中
  21. reset()方法可以将现有的Matcher对象应用于一个新的字符序列
  22. Scanner的构造器可以接受任何类型的输入对象,包括File对象,可以使用scanner的各种类型的next方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值