对于 对于String str=”aaa”,这种字面值方式赋值,我进行以下归纳: 1) 在不存在“aaa”的情况下,首先查找常量池中是否存在“aaa”这个对象,如果不存在,则在常量池中创建一个“aaa”,然后将常量池中的这个“aaa”对象的地址返回来,赋给引用变量str,这个str会指向常量池中的这个“aaa”字符串对象。 2) 如果存在“aaa”情况下,则不创建任何对象,直接将常量池中的这个“aaa”对象地址返回来,赋给str引用。
然而对与String s=new String("aaa"),这种方式,我真的无法去理解,求大神在堆,栈,常量池这种架构深层次帮忙解答。最好配以代码说明。 |