打印false是应该的吧,"Hel"+lo是两个字符串的和,而"Hello"是一个字符串
hello=="Hello"打印false不是因为二者相等,是因为二者的存储地址一样,
java对字符串的管理是同样的字面量在堆中只有一个,所有“相等”的变量只是同一个字符串字面量的引用,这么解释知道为什么了么?
hello=="Hello"打印false不是因为二者相等,是因为二者的存储地址一样,
java对字符串的管理是同样的字面量在堆中只有一个,所有“相等”的变量只是同一个字符串字面量的引用,这么解释知道为什么了么?
解决方案 »
- 关于hibernate
- 【求助】spring+struts2+ibatis访问速度慢
- 关于SSH的问题---------大家进来帮个忙
- servlet为什么总不更新呢?请求大家帮忙
- 学习EJB3遇到错误,进展不下去了,求高人指点~~
- 哪位大虾研究过Compiere,小弟请教一问题,先谢过~~~~
- eclipse3.0+lomboz+tomcat,为什么jsp该了之后重新deploy模块执行页面不能更新啊?
- 各位高手,帮忙看看这个错误是怎么产生的,怎么解决?它每天都发生一两次啊!Tomcat5+SQLServer2000
- 调查:你们是使用什么软件做版本控制的?
- 很菜的问题……
- 讨论:在静态方法中,可以使用多线程吗?
- ejbCreate可以重载吗?
请注意
而equeal方法只是不是这两个值相等。比如:
String A = "aaaaaa";
String B ="aaaaaa";
String C = A;A == C 是对的,A.equal(C); 也是对的。
但
A.equeal(B)是对的,A!=B
同时注意,当两个string相加时候,得到的新的对象是另外一个新的地址。
比如; A+B; 将会得到一个新的对象"aaaaaaaaaaaa",但是他既不是在A地址上的扩展,也不是在B上的扩展。而是一个新的地址。这也就是为什么我们使用StringBuffer节省内存的原因。