java中为什么字符串要初始化

public class Stringtwo {
public static void main(String[] args) {
String A=new String("明月几时有,");
String K="把酒问青天,";
String Q="不知天上宫阙,";
String J="今夕是何年。";
String E=A+K+Q+J;
System.out.println(A);
System.out.println(K);
System.out.println(Q);
System.out.println(J);
System.out.println(E);
}
}
我把第一个
String A=new String("明月几时有,");改成
String A="明月几时有,";
他运行的结果是一样的。。
哥哥们能详细讲解下吗?
能告诉一下:
在什么情况下需要初始化?谢谢!!!

字符串初始化,实际上是为了进行内存存储和地址引用。
如:String str = new String("ABC");这个就是在内存中创建一个位置来存储“ABC”,之后在通过地址引用,赋值给“str”,如果不初始化的话,就没有进行存储,也就无从谈起引用。
备注:String str = “ABC”;结果和之前的“String str = new String("ABC");”是一样的,“ABC”创建过程实际上就是一个初始化过程,所以没必要纠结在这块,会用即可。不同的是每次new都创建一个存储空间来存储,而赋值(“ABC”)的形式,如果之前存在就直接引用,不存在才会创建。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-23
String A=new String("明月几时有,");和String A="明月几时有,";的效果是一样的,都是在给字符串A初始化,所以运行结果一样。
在java中,都需要初始化。
第2个回答  2012-10-22
你用String A = new String("明月几时有,");只不过是通过String的构造方法给开辟了一块内存空间来存储这些字符串,然后把引用赋值给A,而String A =” 明月几时有,“,则是相当于这些字符串就是一段常量,把引用放到这个位置,结果必然是一样的!!本回答被提问者和网友采纳
第3个回答  2012-10-22
如果有过c基础就很好理解了,
String A=new String("明月几时有,"),这个 “明月几时有,” 是存在堆中;
String A="明月几时有,"; 这个“明月几时有,” 是存在常量区中
第4个回答  2012-10-22
初始化啊 这事
相似回答