String ,StringBuffer,StringBuilder的区别

String一旦创建就无法去改变 如果字符串给会创造一个新的字符串

我们在使用String方法时候可以发现都有返回值 实际上是创建了一个新的字符串

在API文档中String底层源码是被final修饰的 final修饰的方法一但赋值无法改变

String s = "你好";

System.out.println(s);

System.out.println(s.hashCode());//hashCode打印地址的方法

String s1= s.subString(0,1);

System.out.println(s1);

System.out.println(s1.hashCose());

那么在什么情况下使用StringBuffer,StringBuilder呢 字符串经常变化的时候使用这两个

不经常变化用String

StringBuffer和Stringbuilder 在原有的对象中进行修改

StringBuffer底层源码中有同步关键字synchronized:线程安全 效率慢

StringBuilder底层源码中没有同步关键字synchronized;线程不安全效率高

锁机制 如果是同步方法线程访问方法之前会看类对象是否加锁 ,没有加锁可以访问方法(StringBuilder)

加锁的在队列中等候释放锁之后才可以被访问(StringBuffer)生活例子在医院挂号 问号这个过程中有一个休息处

还可以理解为公共厕所门 别人进去 其他人就要等着

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值