public static void mian(String[] args) { String A, B, C; A = "a"; B = "b"; A = A + B; StringBuffer D = new StringBuffer("string"); D = D.append("s"); }
public static void main(String[] args) {//不是mian, 是main String A, B, C; //字符串变量不能是大写的 A = "a"; //一个, B = "b"; //一个 A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString() StringBuffer D = new StringBuffer("string");//一个 D = D.append("s"); } 一共4个 注:个人理解,仅供参考!
其实toString()也会产生一个String对象,所以有5个String对象
A = "a"; //一个 B = "b"; //一个 A = A + B; //一个 StringBuffer D = new StringBuffer("string"); //"string"一个 D = D.append("s"); //s也是一个String对象 一共5个
最后一句 D = D.append("s"); "s"也是一个
4 个对象 String A, B, C; A = "a"; // 1 B = "b"; // 1 A = A + B; // String 是final类型,A+B会生成新对象 StringBuffer D = new StringBuffer("string"); // 1 D = D.append("s");
2个 A = A + B; StringBuffer D = new StringBuffer("string");A = "a"; B = "b"; "string" 都是存在常量池中的。没有对象
没说完,这个是语法层面,实际上编译器会做优化,
String A, B, C; A = "a"; B = "b"; A = A + B; 一开始就已经确定,都是放在常量池里,没有对象,只有引用 StringBuffer D = new StringBuffer("string"); 只有一个
4个 A = "a"; //一个, B = "b"; //一个 A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString() StringBuffer D = new StringBuffer("string");//一个 D = D.append("s");
“ A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString() ”在虚拟机中被解释成String A=(new StringBuffer().append("a").append("b")).toString(),放眼看去,至少创建了一个StringBuffer对象了,toString的时候还创建了一个String对象,String和StringBuffer的底层都是char数组,这就又有两个数组对象了
String A, B, C; //字符串变量不能是大写的
A = "a"; //一个,
B = "b"; //一个
A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString() StringBuffer D = new StringBuffer("string");//一个
D = D.append("s");
}
一共4个
注:个人理解,仅供参考!
其实toString()也会产生一个String对象,所以有5个String对象
B = "b"; //一个
A = A + B; //一个
StringBuffer D = new StringBuffer("string"); //"string"一个
D = D.append("s"); //s也是一个String对象
一共5个
A = "a"; // 1
B = "b"; // 1
A = A + B; // String 是final类型,A+B会生成新对象
StringBuffer D = new StringBuffer("string"); // 1
D = D.append("s");
A = A + B;
StringBuffer D = new StringBuffer("string");A = "a";
B = "b";
"string"
都是存在常量池中的。没有对象
String A, B, C;
A = "a";
B = "b";
A = A + B;
一开始就已经确定,都是放在常量池里,没有对象,只有引用
StringBuffer D = new StringBuffer("string"); 只有一个
B = "b"; //一个
A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString() StringBuffer D = new StringBuffer("string");//一个
D = D.append("s");