很虎的搞明白String创建对象的例子

来源:互联网 发布:转换音频格式的软件 编辑:程序博客网 时间:2024/06/02 12:02

 public class TestPool {


 public static void main(String[] args) {
  String s1="abc";//创建1个对象
  String s2="abc";//创建0 个对象,累计1 个对象;
  String s3=new String("ab");//创建了2个对象,一个在堆区,一个在String常量池中!累计3 个对象;
  String s4=new String("ab");//创建 1 个对象,在堆区并且个对象指针指向String常量池中的“ab“;累计4个对象;
  System.out.println(s1==s2);//t s1和s2指向相同的地址;
  System.out.println(s1.equals(s2));//t s1和s2的内容相同;
  System.out.println(s3==s4);//f s3和s4的地址不同,指向堆区的不同地址;
  System.out.println(s3.equals(s4));//t s3和s4的值相同;
  String s5=s1+"d";//s1 是一个变量;创建2 个对象,一个是“d”在String常量池中,一个是(s1+"d")的和“abcd“当然是在堆区;累计6 个对象;
  String s6="abc"+"d";//创建1 个对象,在String常量池中 "abcd" 累计7个对象;
  String s7="abcd";//创建 0 个对象  累计 7个对象;
  System.out.println(s5==s6);//f  s5指向堆区,s6指向String常量池
  System.out.println(s6==s7);//t s6和s7都指向String常量池的相同的地址;
  System.out.println(s5==s7);//f s5指向堆区,s7指向String常量池
  

 }

}

原创粉丝点击