String

String,StringBuilder,StringBuffer有什么区别?

  1. String用于字符串操作,属于不可变类(final修饰),也就是说,String对象一旦被创建,其值将不能改变;
  2. StringBuilder 用于字符串操作 , 底层有一个可以改变的字符数组,可以对这个字符数组做任何操作.当StringBuilder—>String类型时,将StringBuilder的可变char数组赋值给String的不可变char数组.StringBuilder线程不安全
  3. StringBuffer也是用于字符串操作,但他是可变类,当对象创建后,仍然可以对其值进行修改. 所以,如果一个字符串经常被修改,使用StringBuffer有更高的效率.StringBuffer线程安全.

为什么要把String设计为不变量?

  1. 节省空间:在Java语言中,为了提供效率与空间使用率,把字符串常量存储在String pool中,这些字符串可以被共享,为了保证一个用户对字符串的修改不会影响其他用户的使用,String被设计为不可变量
  2. 提高效率:将String设计为不可变量,在多线程编程时,他就是线程安全的,就不需要对String进行同步,可以显著提高多线程的效率。
    另外,String经常被当做HashMap的key进行存储,也就需要计算String的hash值,String的不可变,所以他的hash值也会保持不变,就可以把他的hash值缓存起来,不需要每次都计算hash值,显著提高效率.
  3. 安全因素:String会经常被用作参数来使用(例如连接数据库时使用的用户名,密码等等),如果String是可变量,就可以通过特定的手段对这些参数进行修改,从而修改文件的内容或属性.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值