Java stringbuilder StringBuffer String

stringbuilder 原理

在Java中有String Stringbuilder Stringbuffer,但是 stringbuilder 时运行最快的一个

速度 Stringbuilder > Stringbuffer > String,

但是StringBuffer synchronized 关键字进行修饰,所以是时线程安全的,而Stringbuilder时不安全的,但由于Stringbuilder没有没有加锁进行判断,所以单线程是效率最高的,而String严格意义上来说,其实是一个常量,因为它不能改变,所以它和前两个有较大的差别,因为StringBuilder和StringBuffer是对象可变的,它们两个都继承AbstractStringBuilder类。Stringbuilder与Stringbuffer方法基本上是一样的,只是Stringbuffer加了锁了,而Stringbuilder,所以他是最快的

String str = "a";
		str = "b";

在执行这条语句时目标不是str改变了,而是重新引用了,而之前的"a", 就被放弃了,所以需要被回收,然后重新引用,所以String在速度是最慢的

三者的equals方法

在Java里面,只有String重写了equals方法,有人就意味着,当两个字符串比较是否相等时,只有String才能利用equals比较,而StringBuffer与StringBuilder没有重写,所以只是继承了Object类的equals方法,以下是Object的关于equals的源码

public boolean equals(Object obj) {
        return (this == obj);
    }

我们可以看到,只是单纯的利用了 “==” 来判断,所以当需要判断两个StringBuffer或者两个StringBuilder字符串是否相等时,就不能利用equals了

但是这个时候我们可以利用StringBuffer或者StringBuilder的 toString() 方法,将他们置换为String 然后再利用equals比较是否相等了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值