前言:
如今咱们对“java求最后一个字符串的长度和宽度”可能比较注重,朋友们都需要了解一些“java求最后一个字符串的长度和宽度”的相关内容。那么小编在网络上收集了一些关于“java求最后一个字符串的长度和宽度””的相关内容,希望朋友们能喜欢,各位老铁们快快来了解一下吧!上节我们讲解了关于StringTable的设置相关的知识,这节我们主要讲解下String,StringBuilder和StringBuffer的使用场景和区别,话不多说,直接上干货。
一、String类的使用
String类中定义了一个char数组来存储当前String对象的字符串值,数组采用final修饰,不可修改,同时定义了hash字段来存储哈希码,相关源码如下:
/** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0
同时String类也提供了对字符串进行一系列操作的方法,比如,取子串等等。
二、StringBuilder的使用
StringBuilder类从AbstractStringBuilder类继承了两个属性,分别是char数组value和整型count,具体含义如下:
/** * The value is used for character storage. */ char[] value; /** * The count is the number of characters used. */ int count;
StringBuilder提供了多种构造器供开发者调用,初始化对象,同时默认预留16个char空间供后续字符的新增。
public StringBuilder(String str) { super(str.length() + 16); append(str); }
StringBuilder是非线程安全的,但是它支持动态的拼接,不会像String对象不可变,造成空间浪费。
三、StringBuffer的使用
StringBuffer类和StringBuilder大同小异,区别在于它是线程安全的,因为它的方法采用synchronized关键字修饰,以下是它的方法,大家可以在使用的过程中活学活用
java.lang.StringBuffer#StringBuffer() //构造函数java.lang.StringBuffer#StringBuffer(java.lang.String) //构造函数java.lang.StringBuffer#length() //返回字符串长度java.lang.StringBuffer#charAt(int) //返回对应索引位的字符java.lang.StringBuffer#append(java.lang.String) //追加字符串至对象末尾java.lang.StringBuffer#append(char) //追加字符到对象末尾java.lang.StringBuffer#delete(int, int) //删除索引范围内的字符串java.lang.StringBuffer#replace(int, int, String) //替换对应索引位的字符串为入参值java.lang.StringBuffer#substring(int, int) //取子串java.lang.StringBuffer#insert(int, char) //插入字符java.lang.StringBuffer#indexOf(java.lang.String) //获取字符串在对象中的索引位java.lang.StringBuffer#lastIndexOf(java.lang.String) //获取字符串在对象中的最大索引位java.lang.StringBuffer#reverse() //字符串反转java.lang.StringBuffer#toString() //输出String
四、总结和建议
在日常项目开发中,对于一些常量,建议使用String类初始化到字符串常量池,减少内存占用,而对于频繁需要变化截取或追加的字符串,建议使用StringBuilder类,在非线程安全的场景下,它的效率是极高的。只有在真正需要满足线程安全场景下对字符串进行修改操作时,才建议使用StringBuffer类来进行编码,这样才能保证编码的合理性。
因篇幅限制,关于String的讲解到这里就告一段落,下一节将开启性能实战之正则表达式篇章,感兴趣的小伙伴可以关注作者,一起学习交流,谢谢大家!以下为String相关文章链接:
String性能问题之字符串复用
关于String的常见疑问,你都知道吗?
关于StringTable的设置,看这篇文章就够了
标签: #java求最后一个字符串的长度和宽度