Java String 和 StringBuilder 区别

在日常写代码时,很多刚接触编程的朋友会碰到字符串相关的操作,经常会疑惑:明明都是处理文字的,为什么有时候用String,有时候又要用到StringBuilder?其实这两个东西就像咱们生活里的“普通笔记本”和“可粘贴修改的活页本”,看着差不多,实际用起来差别可大了。

先搞懂String:像“一次性写完的普通笔记本”

咱们平时写日记、记零散的小事,用普通笔记本写就够,但如果要反复改、加内容,就会麻烦。String在Java里就是这种“普通笔记本”:它一旦创建好,内容就再也改不了了——哪怕你只是想在后面加几个字,本质上都是重新做一本新的笔记本,把原来的内容和新内容拼在一起,再存成一个新的String。

Java String 和 StringBuilder 区别

举个生活化的例子:你想把“我今天吃了”和“一碗红烧肉”拼成一句话,用String的话,过程就像先拿第一本笔记本写“我今天吃了”,再拿第二本写“一碗红烧肉”,最后又做第三本,把前两本的内容抄一遍,变成“我今天吃了一碗红烧肉”。要是你反复改个十次八次,就得做十几本新本子,既费时间,又占地方。

再说说StringBuilder:像“可以随时撕贴的活页本”

StringBuilder就不一样了,它是“活页本”——你想加内容、改内容,直接在这本活页本上操作就行,不用重新做新本子。还是用刚才的例子:要把两句话拼起来,StringBuilder就像拿一本活页本,先写“我今天吃了”,然后直接在本子末尾“贴”上“一碗红烧肉”,整个过程就在这一本本子上完成,不用再做新的,也不用反复抄内容,速度快多了。

而且StringBuilder还有个实用的小细节:它允许你在同一个本子上反复修改,比如你写完“我今天吃了一碗红烧肉”,突然想改成“我今天吃了两碗红烧肉”,直接把“一”改成“两”就行,不用重新做本子,这一点对要经常调整内容的场景特别友好。

什么时候用哪个?选对才高效

那到底什么时候用String,什么时候用StringBuilder呢?其实核心看你对字符串的操作频率:如果只是定义一个固定不变的字符串,比如用户名、固定的提示语,用String就完全够用,简单又省心;但如果需要反复修改、拼接字符串,比如循环里生成内容、动态拼接用户输入的信息,那就一定要用StringBuilder,不然程序跑起来会慢,还可能占很多内存。

举个常见的代码场景例子:比如要循环100次,每次加一个数字到字符串里,如果用String,每循环一次就要生成一个新的字符串,100次就生成100个新对象,程序得花很多时间在“做新本子”上;而用StringBuilder的话,整个循环都在一本活页本上改,100次操作就完成了,速度快得不是一点半点。

其实就像咱们买文具:平时记笔记用普通本,要是需要经常改的草稿、素材,就用活页本,选对了才顺手,编程也是这个道理,选对String和StringBuilder,能让代码运行得更高效。

上一篇 Swift语言基础语法与核心特性,助力开发者高效构建iOS应用的实用科普