字符串的使用

1. concat 和 “+” 的区别

从底层代码来看,区别在于:

(1)使用"+"号会将字符串转换为StringBuilder,然后执行连接操作,最后将StringBuilder转换回String。StringBuilder具有一个大小为16的数组空间,用于执行a和b的连接运算,这会占用更多内存,但内存效率更高。
(2)而使用concat方法则是利用System.array_copy来产生一个新的字节数组,该数组的长度为两个字符串的和,用于存储数据。Concat占用的内存空间较少,但效率并不一定更高。

2. indexOf 和 lastIndexOf

IndexOf方法用于正向输出字符在字符串中的索引,

lastIndexOf方法则用于倒序输出字符在字符串中的索引。

3. endsWith 和 startsWith

startsWith方法用于判断字符串的开头内容,对文件管理及命名问题有帮助,特别是在进行文件操作时(例如sd1、sd2、sd3)。

endsWith方法则用于判断字符串的结尾内容,类似于文件打开操作中通过后缀名来确定文件类型。

4. equals 和 hashCode

Equals方法用于判断两个字符串的值是否相等,但其效率并不高,因为其底层源码是使用for循环实现的。

hashCode方法返回一个哈希值。在String中,对元素进行算法,得到一个hashCode值。如果两个值的hashCode相等,那么这两个值可能相等。对于String中的每个元素,其hashCode算法是将每个元素的字节加上31乘以前一个元素的哈希值,而默认情况下,前一个元素的哈希值为0。在比较字符串是否相等时,最科学的方法是先比较hashCode,然后再比较equals方法。使用hashCode进行switch比较的效率会非常高。

5. length() 和 charAt()

在Java中使用StringBuilder来执行字符串相关的操作。存储的值’a’被视为一个对象来存储。使用new String()创建的对象是一个地址,底层的char[]数组value也是一个地址。最后,合成字符串"ab"的是一个char数组,这个对象是"ab",没有使用new关键字。

length()方法对字符串来说是一个方法,对于数组来说是一个属性。字符串的方法调用了数组的属性。

6. substring() 子串

使用Substring方法来获取子串,需要指定起始位置和结束位置,即startIndex和endIndex。区间为左闭右开,即底层的操作是endIndex减去startIndex,因此不包含endIndex位置的字符。实际底层操作是从startIndex开始取几个字符,并不是取从startIndex到endIndex位置的字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值