【关于java.lang.String的深层知识】

String是常量,其对象一旦创建完毕就无法改变,当使用+拼接字符串时,会生成新的String对象,而不是向原有的String对象追加内容。

  1、String Pool(字符串池):对于字面赋值String str3 = "bbb";

  第一步:查找String Pool中是否存在"bbb"这个对象,如果不存在,则在免费windows xp电脑系统和xp系统下载基地String Pool中创建一个"bbb"对象,然后将String Pool中的这个"bbb"对象的地址返回来,赋给引用变量str3,这样str3会指向String Pool中的这个"bbb"字符串对象。

  第二步:如果存在,则不创建,直接返回这个对象地址。注意:

  String str4 = "bbb";然后修改str3="ccc";就会创建一个新的,并不会影响到str4。

  2、对于String str = new String("aa");

  a)首先在String Pool中查找有没有"aa"这个字符串对象,如果有,则不在String Pool中再去创建"aa"这个对象了,直接在堆(heap)中创建一个"aa"字符串对象,然后将堆中的这个"aa"对象的地址返回来,赋给str引用,导致str指向了堆中创建的这个"aa"字符串对象。

  b) 如果没有,则首先在String Pool中创建一个"aa"对象,然后再在堆中创建一个"aa"对象,然后将堆中的这个"aa"对象的地址返回来,赋给str引用,导致str指向了堆中所创建的这个"aa"对象。

posted on 2013-07-27 09:46  挖掘者者者  阅读(175)  评论(0编辑  收藏  举报