String
String str =”hello“; String str ="helloWorld"
string每一次改变都会在堆中生成了一个新的对象,然后原有的对象引用了新的对象,所以说String本身是不可以改变的,每一次改边字符串内容,都会创建新的对象,而每一次产生新的对象都会对系统性能产生影响,这会降低java虚拟机的工作效率
在堆内存中开辟一个空间,一个匿名内部类,数值方法栈内存中。
StringBuffer && StringBuilder
stringBuffer是线程安全的,StringBuilder是线程不安全的,stringBuffer在字符串修改上的效率比stringBuilder的效率低一些。单线程的时候用stringBuilder更好一些,因为不怕多线程操作。
String每次修改字符串内容的时候都会在堆内存中重新开辟一个空间,stringBuffer是在原有的基础之上追加或者修改。执行效率比string快很多
创建方式:
StringBuffer sbf =new StringBuffer("hello")
StringBuffer sbf =new StringBuffer();
转换方式:
String str ="String";
StringBuffer sbf=new StringBuffer(str );//string转成StringBuffer
StringBuilder sbd =new StringBuilder(str);//转成StringBuilder
String str =sbf.toString();//转成String
String str =sbd .toString();//转成String
StringBuffer sbf =new StringBuffer(sbd.toString())//StringBuilder转成StringBuffer
StringBuilder sbd =new StringBuilder(sbf.toString())//StringBuffer转成StringBuilder