java String对象
2019-06-13 14:49:25 25 举报
Java字符串
作者其他创作
大纲/内容
twosixfour
s8
s6
javaString对象
onetwo
three
通过通过value引用
s9
one
four
堆
s5
sixfour
s4
s3
fiveone
two
s1
twothree
虚拟机栈
s2
s7
String s1 = \"one\"; final String s2 = \"two\"; final String s3 = \"three\"; //通过堆中s4的value(char value[])属性引用常量池中four字符串对象的value属性 String s4 = new String(\"four\"); //有引用类型相加会调用stringBuilder.append()进行追加,所以s5(fiveone)不会进入常量池 String s5 =\"five\"+s1; // s1为非final类型的引用,会调用stringBuilder.append()进行追加得到s6(onetwo)不会进入常量池 String s6=s1+s2; // 两个引用类型都为final,所以s7(twothree)会进入常量池 String s7=s2+s3; //同s5同理,s8(sixfour)不会进入到常量池,虽然s8为final类型 final String s8=\"six\"+s4; // s8不在常量池中,所以s9(twosixfour)不会进入常量池,虽然是两个final类型的引用相加 String s9=s2+s8; System.out.println(s5==\"fiveone\"); //false System.out.println(s6==\"onetwo\"); //false System.out.println(s7==\"twothree\"); //true System.out.println(s9==\"twosixfour\"); //false
five
常量池
0 条评论
下一页