Java编程思想之字符串

1.     String对象是不可变的,String类中任何修改String值的方法都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则不变。

2.     方法中的参数引用,拷贝了实参引用,指向单一物理位置的对象,属于局部引用。

3.     String对象只具有可读性,任何指向其的引用不会改变它的值,因此,就不会对指向它的其他引用有影响了。

4.     不变性带来了效率的问题。在一个字符串表达式中,为了生成最终的String,会产生大堆需要垃圾回收的中间对象。出去这个问题,当观察JVM字节码时,可以看到虽然在源代码中并没有使用StringBuilder类,但编译期却自动使用了它,因为它更高效。所以如果字符串的操作使用了循环,那么最好使用StringBuilder对象来构造最终结果,因为编译的字节码只产生一个StringBuilder对象。当字符串的操作很简单时,可以信赖编译器,它会合理构造最终的字符串结果。如果拿不准使用何种方式,可以使用javap来分析程序。

5.     无意识的递归:即在类的toString()方法中出于对象内存地址的考虑,使用了this,当打印此类对象时,发生了递归调用。

6.     当需要改变字符串内容时,String类的方法都会返回一个新的String对象。如果内容不变时,String方法只返回原对象的引用,节省存储空间和额外的开销。

7.     占位修饰符,如:%d,表示插入数据位置,也表示数据的类型。System.out.printf和System.out.format()等价。

8.     Formatter类使用构造器,来初始化最终结果的输出目的地。用format函数来格式化输出数据。格式化说明符,width表示最小尺寸,(.precision)表示最大尺寸。

9.     对于boolean或Boolean对象,其b转换结果是true或false。但对其他类型的参数,只要该参数不为null,那转换结果永远都是true。即使是数字0,也是这样的。

10.  String.format()是静态方法,接受Formatter.fortmat()方法一样的参数,但返回String对象。

11.  正则表达式是提供复杂的文本模式来描述字符串,是一种通用的方式。在Java中,\\的意思是插入正则表达式的反斜线,所以其后的字符具有特殊转义意义。而其他语言,只表示文本的反斜线。

12.  String对象有matches(正则表达式字符串)方法,来匹配模式。

13.  量词描述模式吸收输入文本的方式。包括贪婪型,勉强型和占有型。

14.  正则表达式的一般使用,先导入java.util.regex包,然后用static Pattern.compile(正则表达式字符串)方法编译正则表达式来得到Pattern对象,接着使用Pattern对象的matcher(输入字符串)来生成Matcher对象。该对象可以做很多事。

15.  Pattern类还提供静态的match(正则表达式,输入字符串)方法。

16.  组是用括号划分的正则表达式,可以根据组的编号来引用某个组,组号0为整个表达式,组号1为被第一对括号括起来的组。

17.  Pattern的compile()方法还有另外一个版本,接受一个标记参数,以调整匹配行为。字符串对象有replaceFisrt和replaceAll方法,而Matcher对象有appendReplacement(sbuf, replacement)和appendTail(subf)方法,appendReplacement运行在操作替换的过程,操作用来替换的字符串。

18.  通过reset方法将现有的Match对象应用于新的字符串。

19.  StringReader将String对象转成可读的流对象,用来构造BufferReader对象。

20.  Scanner类,大大减轻了扫描输入负担。其构造器可以接受任何类型的输入对象。使用next()方法来读取下一个String,只有在找到一个完整的分词后才会返回。Scanner定界符:使用useDelimit()设置。

21.  当next配合指定的正则表达式字符串使用时,将找到下一个匹配该模式的输入部分,调用match方法来获得匹配结果。如果正则表达式中含有定界符,那永远不可能匹配成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值