String s1,s2;
s1=new String("we are students");
s2=new String("we are students");String s3,s4;
s3="how are you";
s4="how are you";
s1 s2引用不同的实体
s3 s4是引用同一个实体为什么会不同呢?
s1=new String("we are students");
s2=new String("we are students");String s3,s4;
s3="how are you";
s4="how are you";
s1 s2引用不同的实体
s3 s4是引用同一个实体为什么会不同呢?
所以s3 和s4是引用同一个实体;而s1 new 了一个String()实体;
s2也 new 了一个String()实体;只不过s1和s2的内容一样而已。
String s;
s=new String("we are students");
也可以一步完成:
String s=new String("we are students");
也可以用一个已创建的字符串创建另一个字符串,如
String tom=String(s);
为什么不是String tom=s? tom和s会是引用同一个实体还是不同实体?
String tom=String(s);
为什么不是String tom=s? tom和s会是引用同一个实体还是不同实体?你敲过String tom = s 吗? 试试,没验证过就别说不对
String tom=new String(s);如果不是,那么String tom=s;是正确的。
(写String tom=new String(s);那么面试的时候绝对是直接被cut掉的)
这样写是不可以的,除非你写了一个String的方法,并且这个方法的返回值是String类型的。
String tom=new String(s);
而这样写是构造了另外的一个对象的实例。
new的意思就是创建一个对象的实例。
s1=new String("we are students"); s2=new String("we are students");栈中的s1,s2分别引用堆中两个对象,堆中的这两个对象指向常量池中的同一个常量"we are students",所以s1,s2的并不相等.