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

举报
周杰伦本人 发表于 2022/11/29 18:26:11 2022/11/29
【摘要】 聊聊Java编程必用的对象——字符串要说Java编程中对什么的处理做多,莫过于字符串了。 String的各种方法String类被final修饰,表明它是一个不可变的类,它具有只读性,任何引用都不会改变它的值。对应String提供的一些方法,对于一些常用的方法,我们是需要了解一下,charAt()方法:获取指定索引位置的字符toCharArray()方法:将字符串转换为char数组,这个我当...

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。