十三 字符串
字符串操作是计算机程序设计最常见的行为之一
不可变的String
String对象是不可变的。String类每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,已包含修改后的字符串内容。而最初的String对象丝毫未动。
如上代码string.toUpperCase(),实际上传递的是引用的拷贝。其实,每当String对象作为方法的参数是,都会复制一份引用,而原来的对象引用在原来的位置未曾改变。
重载“+”与StringBuilder
String的对象时不可变的,你可以自定义任意多个指向它的引用都不可能改变它本身的值。当然不可变性也会带来一定的效率问题。为String对象重载的“+”操作符就是一个例子。操作符“+” 用来连接String:
如上的代码如此工作:String产生一个新的String对象,来包含“aaa”和“mango”连接后的字符串。然后,该对象再于“bbb”连接生成一个新的String对象,以此类推。当然这样的工作方式也是能够达到连接字符串的目的,但是这样的性能可能无法达到理想状态,
output:
StringBuilder是在循环之内构造,这也意味着只用创建一个对象即可得到最终的连接值,其中StringBuilder提供了丰富而全面的方法,包括insert()、repleace()、substring()、reverse()等方法,当然常用还是append()、toString()和delete()方法。在JAVA SE5之前使用StringBuffer。StringBuilder是线程安全的,使用StringBuilder能够明显的减少String对象的产生。
格式化输出
在Java 5 以后推出了C语言printf()风格的格式化输出的功能,使得控制输的代码更加的简洁,同时给Java开发者输出格式输出与排列有更加强大的控制能力。
他山之石:java基础---->Java的格式化输出这是一篇写的比较细致的格式化输出的文章有助于理解格式化输出。
正则表达式
正则表达式是一种强大而灵活的文本处理工具。能够解决各种字符串处理的相关的问题:匹配、选择、编辑以及验证。
以下是一些比较好的学习知识总结:
菜鸟教程:http://www.runoob.com/java/java-regular-expressions.html
JAVA正则表达式详细总结:https://www.cnblogs.com/chenshengjava/p/8584293.html