1.String是常量,创建之后内容不能改变,StringBuffer和StringBuilder的内容都是可变的;
2.StringBuffer是线程安全的,但是效率低;
3.StringBuilder是线程不安全的,但是效率高;
怎么理解这三句话?
比如String s = "abc”;
String s1 = s +"be";
先是s被定义,"abc"是放在方法区的常量池,在做拼接的时候,不会覆盖原来的s变量,而是在常量池里生成新的常量。
StringBuffer和StringBuilder的内容都是可变的---是直接在原来的基础上拼接没创建新的对象
什么是线程安全?
比如说一个方法一次只能被一个对象调用,和一个方法一次可以被多个对象调用,很显然,一次只能被一个对象调用的是安全的,效率低的
一个方法一次可以被多个对象调用,是不安全的,效率高的;