目录
1.String 类
String类是一种不可改变对象,在设计是就是不可改变的,字符串中的内容是不可改变的,即字符串不可修改。在创建字符串变量之初就确定了。这是String类的部分代码:
我们可以看见String类中的字符实际保存在内部维护的value字符数组中,value被final修饰,表明value自身的值不能改变,即不能引用其它字符数组,但是其引用空间中的内容可以修改。String类对象的修改其实是创建了一个新的对象,将值传给新的对象,改变的是新的对象的值,通过这种方式来改变String对象。
2.StringBuffer、StringBuilder类
其实StringBuffer、StringBuilder类方法基本相似(具体的方法根据自己的需求自行去网址查看:https://docs.oracle.com/javase/8/docs/api/),具体的区别就是是否采用同步处理。
3.总结
1.String的内容不能修改,StringBuffer、StringBuilder的内容可以修改,频繁修改字符串考虑StringBuilder、StringBuffer。如果想要String与其转换,可以将String转化为StringBuilder,利用构造方法或append()方法;StringBuilder转化为String可以调用toString()方法。
2.StringBuffer、StringBuilder两者方法基本相似,主要区别就是StringBuffer是多线程同步处理的,是线程安全的,StringBuilder是单线程非同步处理的,是非线程安全的。
3.String内容修改需要创建新的对象,效率是非常慢的,因此:尽量避免对String的直接修改需要,如果要修改建议尽量使用StringBuffer或者StringBuilder。