CSDN博客

img cymyell

内存常量池

发表于2008/10/3 22:49:00  303人阅读

 public class TestPool {
 public static void main(String[] args) {
  String s1 = new String("abc");//堆 2,s1是指针,放在栈里,abc放在堆里
  String s2 = new String("abc");// 3
  String s3 = "abc";//池 3    abc放在池里
  String s4 = "abc";//String的equals重写了,和s3指向同一个abc,因为都是指向常量池里的abc,而常量池的abc只有一个。
  System.out.println(s1==s2);//s1和s2是两个不同的对象,地址不同,所以输出false;
  System.out.println(s1.equals(s2));//两个不同的对象的值相同
  System.out.println(s3==s4);abc是一个常量,s3和s4上的值也是一样的
  System.out.println(s3.equals(s4));
  System.out.println("*********");
  //s3 = "c";
  String s5 = s3 + "d";//s3是变量,s5也是变量
  String s6 = s4 + "d";//
  String s7 = s1 + "d";
  String s8 = s2 + "d";
  String s9 = "abc" + "d";//"abc"是常量,s9常量
  String s10 = "abcd";
  System.out.println(s9==s10);//两个相等,因为池中只有一个abcd。
  System.out.println(s5==s6);//相等,
  System.out.println(s5.equals(s6));//相等
  System.out.println(s7==s8);//不等
  System.out.println(s7.equals(s8));//相等
  System.out.println(s1+":"+s3);
 }

}

阅读全文
0 0

相关文章推荐

img
取 消
img