聊聊Java编程必用的对象——字符串
要说Java编程中对什么的处理做多,莫过于字符串了。
String的各种方法
String类被final修饰,表明它是一个不可变的类,它具有只读性,任何引用都不会改变它的值。
对应String提供的一些方法,对于一些常用的方法,我们是需要了解一下,
- charAt()方法:获取指定索引位置的字符
- toCharArray()方法:将字符串转换为char数组,这个我当时出道的时候有被问到。。
- equals()方法:比较两个String的内容是否相同
- contains()方法:判断是否包含指定的字符串
- startsWith()方法:判断是否以指定字符串来开头
- endsWith()方法:判断是否以指定字符串来结尾
- substring()方法:截取字符串,这是比较常用的
这些方法都是操作String对象比较常用的方法,当字符串的值需要改变的时候会创建一个新的String对象并返回,其他情况只是返回这个对象的引用即可。
连接字符串
对应String类型的操作,连接字符串,刚接触Java的程序员可能使用加号➕来操作,但相比StringBuffer、StringBuilder来说,它会产生大量的String对象,如果我们使用加号进行连接的话,编译器会把加号操作转变为StringBuilder的append()方法操作字符串,然后调用toString()方法返回String对象。
有的同学可能会问,既然编译器会帮我们使用StringBuilder了,我们为啥还不推荐使用加号连接呢?当我们明确使用StringBuilder或StringBuffer的时候,相比直接使用加号操作字符串,编译器会创建很少的StringBuilder或StringBuffer对象,使用StringBuffer还有一个好处就是可以根据字符串的大小定义容量,避免StringBuffer内存不够的时候还要重新分配内存。
StringBuffer与StringBuilder
经典面试题会问StringBuffer和StringBuilder有什么区别?通过看源码我们就知道,StringBuffer提供的方法都是通过synchronized关键字来修饰从而保证了线程的安全,而StringBuilder就没有这一特性了,整体上他们提供的处理字符串的方法都是一致的。
StringBuffer的append()方法:
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
总结
这篇文章我们讲了String对象提供的各种API方法,String对象的操作是基础也是重点,对应字符串之间的连接操作,建议使用StringBuffer和StringBuilder来实现,因为这样能产生更少的String对象,StringBuffer的方法中通过synchronized来修饰保证了线程安全。
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
- 欢迎关注我❤️,点赞????????,评论????,转发????
- 关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。 - 有不当之处欢迎批评指正。