java常量池测试总结

来源:互联网 发布:会员视频源码 编辑:程序博客网 时间:2024/05/22 15:18

public class StringPool {
/*字符串常量池:
 *当通过字面值为字符串变量赋值的时候,会优先在常量池中进行匹配;
 *1.如果匹配到了相同内容的字符串,那么当前变量存储已经存在的相同内容字符串的地址
 *2.如果没有匹配到,那么new新的字符串对象,并且将新的地址备份到常量池;
 *
 *当通过new关键字,或者字符串对象进行创建的时候,不会使用常量池,也不会备份
 *
 */
 public static void main(String[] args)
 {
  String str = "123";
  String str1 = "123";
  String str2 = new String("123");
  String str3 = "1"+"23";
  String str4 = new String(str);
  String str5 = "1"+new String("23");
  String str6 = "";
  System.out.println(str==str1);//true
  System.out.println(str==str2);//false
  System.out.println(str==str3);//true
  System.out.println(str==str4);//false
  System.out.println(str==str5);//false
  System.out.println(str==str6);//false,true
  String str7 = new String("456");//两个对象,字面值会创建一个对象,并备份到常量池;又new了一个对象
  str7 = "456";//不创建对象,因为常量池里面有
 }
}

更多Java知识请访问:How2J 的 Java教程

原创粉丝点击