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 条评论
 下一页