第十三章 字符串

来源:互联网 发布:淘宝旺铺基础版店招 编辑:程序博客网 时间:2024/06/11 21:00

不可变的String:

String对象是不可变的

重载“+”与StringBuilder:j

  1. Javap -c (表示生成JVM字节码)
  2. “+”编译器自动的引入了java.lang.StringBuilder类,并为每个字符串调用一次StringBuilder的append()的方法,最后调用toString()生成结果
  3. 当为类编写toString()方法时,如果要在toString()方法中使用循环,那么最好自己创建一个StringBuilder对象,用它来构造最终结果
  4. StringBuilder方法:append(),toString(),insert(),repleace(),substring(),reverse(),最终结果每次用一次append()
  5. StringBuffer线程安全,开销较大

无意识的递归:

希望toString()方法打印出对象的内存地址,使用this会导致递归错误,应该调用Object.toString()方法   super.toString()

格式化输出:

printf():格式修饰符

System.out.format():可用于PrintStream或PrintWriter,其中也包括System.out

Formatter类:

java.util.Formatter类。构造器可以接受多种输出目的地,最常用的还是PrintStream()、OutputStream和File

用法:Formatter f = new Formatter(System.err); f.format("%s The Turtle is at (%d,%d)\n", name, x, y);

格式化说明符:

%[argument_index$][flags][width][.precision]comversion

width:指定最小尺寸

precision:指明最大尺寸

应用于String时,表示打印String时输出字符的最大数量

应用于浮点数时,表示小数部分要显示出来的位数(默认为6位)

无法应用于整数,否则将触发异常

默认右对齐,使用"-"标志来改变对齐方向

Formatter转换:

boolean或Boolean对象,其转换结果为true或false。对其他类型参数,只要该类型不为null,那么转换的结果就永远都是true。数字0转换结果依然为true

d

整数型(十进制)

e

浮点数

c

Unicode字符

x

整数(十六进制)

b

Boolean值

h

散列码(十六进制)

s

String

%

字符“%”

f

浮点数(十进制)

 

 

String.format():返回一个String对象,接受与Formatter.format()方法一样的参数

正则表达式:

基础:

双\\在java中表示插入一个正则表达式的反斜线,插入反斜线用\\\\

换行和制表符用\n\t

" ".split()返回一个String[]

" ".replaceFirst( , )   " ".replaceAll( , )

创建正则表达式:

量词:

贪婪型、勉强型、占有型(防止回溯)

Pattern和Matcher:

Pattern p = Pattern.compile("");

Matcher m = p.matcher(String);

boolean matches() 检查regex是否匹配整个CharSequence类型的input参数

boolean lookingAt() 判断该字符串的起始部分是否能够匹配模式

pattern标记:

Pattern Pattern.compile(String regex,int flag)

Pattern.SASE_INSENSITIVE

Pattern.COMMENTS

Pattern.MULTILINE

split():

替换操作:

reset():将现有的Matcher对象应用于一个新的字符序列

正则表达式与Java I/O:

扫描输入:

Scanner定界符:

用正则表达式扫描:

StringTokenizer: