聊聊Java编程必用的对象——字符串

时间:2022-11-03 14:10:29

聊聊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来修饰保证了线程安全。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞????????,评论????,转发????
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。