String细化了解(下)

日升时奋斗,日落时自省 

目录

二、String类

1.其他操作方法

 2.字符串常量池

2.1对象创建的了解

 2.2字符串修改

3.StringBuilder和StringBuffer

3.1StringBuilder和StringBuffer区别

二、String类

1.其他操作方法

String有很多的方法,我们在这里再简要的补充三个

(1)String trim();    去掉字符串中的左右空格,中间的空格不动

(2)String toUpperCase();    字符串转化为大写

(3)String toLowerCase();    字符串转化为小写

String trim()使用例:

 字符串大小写转换

 2.字符串常量池

2.1对象创建的了解

我们拿一个实例:

 这里为什么会是只有一组是true呢,不都是hello的字符串吗

str1与str2相同这里内部就涉及到了常量池,我们这里其实不是真的对hello进行了判断是否相同,而是地址,更真实一点来说是哈希值相同

注意:这样的好处是为了运行更快,节省内存

那我们来分析一下这四个个不同之处

 分析一下这个图,0x12是表示是str1的地址,放在常量池中,当str2也是直接赋值字符串时,就会直接在常量池中找有没有0x12这个地址了,有的话就指向了该地址,所以str2==str1为真,str3与

str4是创建对象初始化字符串,创建对象就有了新的地址,虽然值是相同的,但是我们对比的是地址。(这里地址都是随便写,方便理解,别当真),str1与str2是常量池中当然不会与创建对象的地址相同。

 2.2字符串修改

注意:当前我们修改都是会创建新对象的,效率很低,因为String是不能修改的,尽量避免直接对String类型修改

使用例:

 这里创建了几个对象,创建了三个对象,hello一个world一个,打印他们的一起又是一个

3.StringBuilder和StringBuffer

在了解这个类之前,我们靠近这了解

 for循环,我们很常了解的一个遍历方法,但是我们遍历的数据都是不很大的,for循环里面都有什么呢

 在这个地方是for循环的,汇编时涉及到了什么,这里面我们能看到一个StringBuilder这里我们不用看其他的,知道这是一个循环,每次循环都会new一个对象StringBUilder,所以说for循环速度很慢,这里就可以来使用我们的StringBuilder来解决运行速度问题,在这里的遍历

 (append方法是拼接的意思)这里我们稍微改动一下,就是把创建StringBuilder对象放在for循环的前面,每次有了就不用在新创建对象了,加快了运行速度(这些数字都不大,可以尝试大一点的数字就可以看出区别了)

以上这两个代码表达效果一样,上面的那个表示的for循环在汇编时就是这么运行的

注意:这里使用StringBuilder和StringBuffer都是一样的

3.1StringBuilder和StringBuffer区别

这两个类也可以赋值字符串,那肯定是不能直接赋值的,需要如下赋值 

 这就是StringBuilder图解

 这是我们刚刚使用append时调用的方法,返回的是this当前stringBuilder本身,不像String需要再创建新对象来存放

 我们了解一下怎么将StringBuilder与String相互转换

 我们这里就拿一个append方法来举例吧:

 觉得这些有什么不同的地方呢,其实不同就在于StringBuffer中有一个synchronize的出现,能够为多线程有一个哨卡作用没更加安全

总述:

(1)String不能修改其内容,StringBuilder和StringBuffer可以修改其内容

(2)StringBuilder和StringBuffer其实他俩的大部分功能是相似的,就是看在哪里使用安全性等问题

(3)StringBuilder线程安全问题,StringBuffer无关线程安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值