字符串知识点总结

本文详细总结了Java中的字符串不可变性、字符串连接优化(StringBuilder)、无意识的递归、字符串操作方法、格式化输出(printf、format、Formatter、String.format)以及正则表达式的基础、创建、量词、Pattern与Matcher的使用,深入探讨了字符串的split、替换操作及Matcher的reset方法,是理解Java字符串和正则操作的重要参考资料。
摘要由CSDN通过智能技术生成

1.不可变String

String对象时不可变的,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,包含修改的字符串内容,最初的String对象没有变化。

public class Immutable{
   
	public static String upcase(String s){
   
		return s.toUpperCase();
}
	public static void main(String[] args){
   
	String q="howdy";
	print(q);
	String qq=upcase(q);
	print(qq);
	print(q);
	}
}

当把q传给upcase()方法,实际传递的是引用的一个拷贝。每当把String对象作为方法的参数时,都会复制一份引用,而该引用所指的对象其实一直在单一的物理位置上,未改变。upcase()的定义,传入其中的引用有了名字s,只有upcase()运行的时候,局部引用s才存在,当upcase()运行结束s则消失。upcase()的返回值其实只是最终结果的引用。因此,upcase()返回的引用已经指向了一个新的对象,而原本的q则不变。

2.重载“+”与StringBuilder

String对象时不可变的,可以给一个String对象加任意多的别名。因为String对象具有只读特性,所以指向它的任何引用都不可能改变它的值,因此,不会对其他引用有影响。重载是指一个操作符咋应用于特定的类时,被赋予特殊的意义。
显式创建StringBuilder允许预先为其指定大小。如果已经知道最终的字符串大概多长,那么预先指定StringBuilder的大小可以避免多次重新分配缓冲。StringBuilder提供丰富的方法,包含insert(),repleace(),substring()

3.无意识的递归

Java中的每一个类从根本上继承Object,因此容器类都有toString()方法,并覆写该方法,使得他生成的String结果能够表达容器自身,以及容器所包含的对象。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值