日期:2014-05-20  浏览次数:20741 次

关于String对象在内存中的存活 (与其他问题不同)
首先感谢进来看的朋友!谢谢你们抽出时间来看我的问题!
  String str1 = "hello";
  String str2 = new String("hello");
  print(str1 == str2)//返回false 
  上面这个返回false很必然,因为一个指向常量池 一个指向堆中的对象。但我的问题来了:
  我想弄明白new出来的String是怎么找到自己的"hello"的,是在堆中有一份拷贝?还是说,自己的对象里有一个引用指向常量池中的"hello"?那么这个"hello"会不会重新建一个空间存放呢?还是说和str1指的是同一个?

看个例子:
  String str1 = "hello";
  String str2 = "hello";
  String str3 = new String("hello");
  String str4 = new String("hello");
  到这里 内存中是不是这样:
  常量池中只有一个"hello"
  栈中有4个引用 分别是str1 str2 str3 str4
  堆中有两个String类的对象 str3和str4分别指向
  
  还是那个问题 str3和str4中的数据 是在哪?指向常量池?还是自己的对象中有拷贝?


------解决方案--------------------
去看String类的构造方法
pubilc String(String orig)
的代码就明白了
------解决方案--------------------
string 对象的理解进行时,你看看,对你会有帮助。