我这样写对不对??
我这样写对不对??
String s1="abc";
String s2="abc";
System.out.println(s1==s2);
结果是true还是false?为什么?
搜索更多相关的解决方案:
不对
----------------解决方案--------------------------------------------------------
当然是true啦
这涉及到String的一些操作
当你给String赋值时,它会把这个值和内存里面已有的值比较,如果有一样的
那么就直接把另一个String的引用指向以前的那个值。这样是为了性能考虑的
但是当你改变其中一个的时候,另一个却不会因此而改变
因为String被设计成"不可变的";
----------------解决方案--------------------------------------------------------
谢谢!我明白了
----------------解决方案--------------------------------------------------------
关键在于是否生成对象
----------------解决方案--------------------------------------------------------
String s1="abc";
String s2=new String("abc");
System.out.println(s1==s2);
这样应该是 false了吧
但
System.out.println(s1.equals(s2))
还是true吧?
----------------解决方案--------------------------------------------------------
那当然,你用了new就是告诉编译器,我要new一个对象,而不是内存里面有的
----------------解决方案--------------------------------------------------------
分析的很透彻
----------------解决方案--------------------------------------------------------