Java编程思想之读书笔记系列十一 --- 第十三章 --- 字符串

  • String对象是不可变的,具有只读特性
  • 预先指定StringBuilder的大小可以避免多次重新分配缓冲(那么:如果超出预先指定的大小,会出现什么情况呢?
  • 重写自定义类的toString()方法的时候,注意避免this的使用,否则会导致无穷的递归(正确的方法应该是调用super.toString()方法)
  • 格式修饰符,在System.out.format当中(比如%d,%f等等)
  • System.out.printf()和System.out.format()方法等同
  • Formatter的构造器经过重载可以接受多种输出目的地,比如PrintStream,OutputStream和File
  • Formatter.format(%-15.15s %5d %10.2f", name, qty, price):-表示左对齐,默认是右对齐;第一个15表示最小宽度,第二个15表示最大宽度(针对string)或者最多小数点位数(针对浮点数)
  • String.format("%05X: ", n):这里的0表示数字前面补0,具体可参考链接:http://blog.csdn.net/lonely_fireworks/article/details/7962171/
  • 在Java中,\\的含义是我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。比如,想表示一位数字,那么应该是\\d;如果想插入一个普通的反斜线,应该是\\\\
  • 总之,有特殊含义的就需要用\\进行转义,比如+号;而-号是不需要转义的
  • Matcher.matches和Matcher.lookingAt方法会改变Matcher本身的状态,从而影响到后续find方法的行为。实例如下:
Pattern p = Pattern.compile( "abba" );
Matcher m = p.matcher( "abbacde" );
while (m.find()){
     System.out.println( "Match "   + m.group() +  " at positions "  
m.start() +  "-"   + (m.end() -  1 ));
}
System.out.println(m.matches());
System.out.println(m.lookingAt());
输出:
Match abba at positions 0-3
false
true
调整一下顺序:
Pattern p = Pattern.compile( "abba" );
Matcher m = p.matcher( "abbacde" );
System.out.println(m.matches());
System.out.println(m.lookingAt());
while (m.find()){
     System.out.println( "Match "   + m.group() +  " at positions "  
m.start() +  "-"   + (m.end() -  1 ));
}
输出变为:
false
true
find方法找不到任何匹配!没有任何输出
  • appendReplacement()和appendTail()方法:
    • appendReplacement()
    • appendTail()
  • Scanner可以接受各种类型的输入对象(构造器),可以指定定界符(useDelimiter()方法),同时可以使用自定义的正则表达式进行扫描(hasNext(String regex))
  • StringTokenizer()方法已经过时,可以利用Scanner和正则表达式进行替换
以上就是关于字符串的笔记内容,如果错误,敬请指出,谢谢!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值