字符串常量优化机制和字符串变量StringBuilder
一.
字符串常量优化机制(早年的面试题,现在考的会比较深).
字符串常量优化机制在编译阶段就可以起到作用,如下图:
String s1=“a+b+c”;
String s2=“a”+ “b”+ “c”;
System.out.println(s1s2);
在编译情况下,就会将 字符串常量 “a” 、“b” 、“c”拼接为abc,其中的值依然和s1一样,依然在常量池里面,所以s1s2 为true。
二.字符串变量,如下图:
String s1=“abc”;
String s2=“ab” ;
String s3=s2+“c”;
当出现 s2+"c"这种情况的时候,其中的s2就会作为变量。此时会在“”堆内存“”开辟新空间
在里面会调用StringBuilder将变量s2所对应的字符串常量"ab"与字符串常量"c"进行拼接
,当然此时的对象是Stringbuilder,。之后再将StringBuilder对象调用toString()方法将StringBuilder转换成String字符串“abc”。可以看出此时(s1==s3)为false,因为由图中也可以知道s1和s3的地址值是完全不同的。