1)    String str1 = "abc";
2)    String str2 = new String("abc");str1对应的"abc"放在栈区里。
str2对应的"abc"放在堆里。
我想问的是:
1)str2显然是一个String 类的实例,那str1也算是一个String 类的实例吗?也就是说两者除了字符串存放的位置,其它没任何区别?
2)如果一个方法返回的是一个String类型
比如类Xclass里有方法:public String getString()
{
    return "dfasdfa";
}在别的类里调用这个函数
String a = Xclass.getString();
String a =new String(Xclass.getString());
这两个有什么不同?
都能编译通过,但是如果String a =new String(Xclass.getString());接受返回的是一个null,则会报异常,第一种方法不会。不知道什么原因?