String ,StringBuilder,StringBuffer三者区分
前两天敲代码,产生了一个疑问,就是我遇到的定义变量都是用SpringBuffer来定义,之前看面试题的时候,看到过它和Spring还有SpringBuilder是有区别的,结果就忍不住查了查资料,毕竟现在还是一个小白哈,啥都需要好好学习一下子的。
一:首先针对新生对象的区别:String声明的对象是不可变的(底层finall 修饰char【】字符串数组 ),也就是所谓的写死的,不可改变对象字符串的内容,StringBuilder和StringBuffer两者可以在原字符串内容的基础上进行操作,例如更改字符串内容 或者类型转换。总而言之,一般主要字符串定义为String类型,而方法体中 一般就用另外两种。
二:说一下StringBuilder与StringBuffer的区别。介绍两者分别什么时候用,StingBuffer线程安全(同步锁保证线程安全),但是性能低于StringBuilder,所以单线程环境下推荐使用StringBuilder,多线程下使用StringBuffer,一般银行系统,学校教务系统,资源管理系统使用的都是多线程安全的,用到StringBuilder很少。
三:对于字符串拼接 的比较。
1,String方式:
String c=“a”+“b”;
2,StringBuilder和StringBuffer:
StringBuilder sb=new StringBuilder();
sb·apend(“a”)·apend(“b”);