美文网首页
第十三章:字符串

第十三章:字符串

作者: MAXPUP | 来源:发表于2017-12-04 23:12 被阅读0次

    String

    不可变String

    String类中每一个看起来会修改String值得方法,实际上都是创建了一个全新的String对象。每当吧String对象作为方法的引用参数时,都会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置上,从未动过。

    重载“+”与StringBuilder

    使用“+”拼接字符串会造成一大堆需要垃圾回收的中间对象。虽然编译器在对“+”操作会自动创建StringBuilder对象,用以构造最终的String,但是编译器容易调入陷阱。比如,在循环添加字符串时,编译器会给每个循环创建一个StringBuilder。
    注:1.可以使用javap来分析你的程序。2.可以使用Object.toString()打印对象的内存地址。

    格式化输出

    System.out.format()(printf()也可以)模仿自C的printf()。

    System.out.println("Row 1: [" + x + " " + y + "]");
    //新的方式
    System.out.format("Row 1:[%d %f]\n", x, y);
    //or
    System.out.printf("Row 1:[%d %f]\n", x, y);
    

    Formatter类:所有新的格式化功能都由java.util.Formatter类处理,当创建一个Formatter对象的时候,需要向其构造器传入输出目标位置,比如PrintStream,System.out。String.format()静态方法作用一样。
    格式化说明符:%[对齐方向][宽度][.精度]类型转换字符
    宽度:表示一个域的最小尺寸,默认是右对齐,可以使用“-”实现左对齐。宽度可以应用于各种数据的转换,其行为方式都是一样的。
    精度:指明最大尺寸。对不同类型意义不同。对于String表示输出的最大字符,对浮点数表示小数部分的位数(默认6位),而对整数使用则会触发异常。

    类型转换字符 -
    c Unicode字符
    b Boolean值
    s String
    f 浮点数(十进制)
    e 浮点数(科学计数)
    x 整数(十六进制)
    h 散列码(十六进制)
    % 字符“%”

    注:除了null,对于boolean转换结果都是true(0也是true)。

    正则表达式

    创建正则表达式:
    Pattern.compile(str 正则表达式)生成一个Pattern对象。
    pattern.match(str 检索字符串)生成一个Matcher对象。
    组:Matcher对象提供了方法获取匹配组的信息。
    Pattern标记:

    Pattern Pattern.compile(String regex, int flag);
    

    详看
    操作:
    分割:split()
    替换:s.replaceFirst、s.replaceAll、matcher.appendReplacement(StringBuffer sbuf, String replacement)、matecher.appendTail(StringBuffer sbu)用法
    matcher.reset(String str)将现有的Matcher对象应用于一个新的字符序列。

    应用:
    1.扫描输入:使用Scanner类注入定界符(scanner.useDelimiter()),或者使用正则表达式扫描(scanner.hasNext(pattern),scanner.next(pattern))。

    相关文章

      网友评论

          本文标题:第十三章:字符串

          本文链接:https://www.haomeiwen.com/subject/vizgbxtx.html