- 博客(3)
- 收藏
- 关注
原创 StringBuilder类的数据结构和扩容方式的解读
(3):当你要给你原来定义的字符串中添加新的字符串时,会调用append()方法,而在StringBuilder中的该方法也使用了父类的append()方法,在父类的append()方法中,他首先会获取你添加字符串的长度,然后通过ensureCapacityInternal(count + len)这个方法来判断是否需要扩容,如果需要扩容,将会在原数组的长度的基础上扩容2倍+2。因为StringBuilder中的无参构造方法中调用了父类 的有参构造方法,并且将数组都长度定义成了16。
2025-03-08 16:15:28
302
原创 String类的equals()的作用和 源代码解读
(4):当长度一样时,用两个char类型的数组来分别保存原有字符串和传进来的字符串,这里定义的整形变量i是为了保存字符数组的下标,然后通过while循环分别遍历两个字符数组,将相同位置的字符进行比较,要是一样,就比下一个,直到把整个数组遍历完,要是遇到不一样的直接返回false,不用在继续比下去。(1):继续沿用Object类中的equals()方法的逻辑,先判断地址是否相同,如果地址不同,值基本不可能相同。(2):当地址一样的时候,会先判断传进来的类型是否是String类型,如果不是,肯定不一样。
2025-01-20 19:18:11
221
原创 String为什么不可变
(2):在String类中,提供的所有方法都会创建一个新的String对象,这就导致你在调用String类的方法时。当使用"=="来将字符串前后进行比对发现,得到的结果为false,这是因为String为引用数据类型,当使用“==”来判断时。3:证明:当给定一个字符串,然后调用String类中提供的toUpperCase()方法,该方法可以让字符串中的小写字母变为大写字母。
2025-01-20 10:09:43
372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅