从源码角度理解String StringBulider StringBuffer三者区别

    String类型的适合于不变的对象,如:String a = "hello world!"不过需要注意的是String b = "hello" +" world" + "!";在JVM眼中a和b是是一样的,但是如果你对String类型的对象进行改变,那么就相当于是new了一个新的String对象。但是为什么会这样呢?其实很简单,只要我们看一眼String类型的源代码就可以知道是final类型。

从源码角度理解String StringBulider StringBuffer三者区别_第1张图片

    StringBuffer和StringBuiler的区别其实也是很容易区分的

从源码角度理解String StringBulider StringBuffer三者区别_第2张图片


    源码里的方法很容易看出区别,我找了append方法来做例子,StringBuffer有synchronized关键字,也就是说是加了锁的,所以StringBuffer是线程安全的,而StringBuild没有加锁,所以是非线程安全的,而为了线程安全肯定是要牺牲性能的,所以单纯的比较速度的话StringBuffer更快。

    就是这么简单。

你可能感兴趣的:(java基础)