对于对象来说,他的值改变了但是他在内存中的存储地址没有变。但是对于如下
String s1 = "aa";
String s2 = "aa";
即使值相等,而s1==s1还是不成立的。你上面那句话中的值似乎应理解为存储地址和空间
String s1 = "aa";
String s2 = "aa";
即使值相等,而s1==s1还是不成立的。你上面那句话中的值似乎应理解为存储地址和空间
解决方案 »
- 有哪位大哥用java写过斗地主的,小弟想要用java写个斗地主,有些问题想要请教
- 如何在java工程配置log日志
- 问一下各位高手,在class file里面的annotation是怎么表示的?谢谢
- 一道有关异常的题,请大家看看
- 为什么去掉两行不能显示了(关于Timer类)
- 关于删除组件的问题
- 请教个在SERVLET中调用 getRuntime().exec(command) 的问题
- 看完DefaultTableModel和DefaultTableColumnModel的疑惑?谁帮我解一下惑,呵呵
- applet中图片的放大缩小,是怎么实现的?
- 大家觉得学习Jbuild有没有必要?????
- jbuilder 8中的数据库操作的问题。
- 急需!!!java native interface的应用者!!
String ss1 = new String("a");
String ss2 = ss1;
ss1 = ss1.concat("b");
System.out.println(ss1.toString()+"------>"+ss2.toString()); // oops // mutable
StringBuffer sb1 = new StringBuffer("a");
StringBuffer sb2 = sb1;
sb1.append("b");
System.out.println(sb1.toString()+"------>"+sb2.toString()); // same
十分感谢你的提示!
请问如何判断此对象非彼对象?
另外在你给出的例子中:
String ss1 = new String("a");
String ss2 = ss1; ss2是接收到ss1的地址还是内容呢?按我的理解应该是内容,是吗?
if(ss2 != ss1) // changed
对String类型对象的改变
事实上是新分配一个对象所以有你所引用的那段话中的说法至于如何判断你只要看 改变前后 两个引用的值(注意:不是内容)是否相同比较方法:使用操作符 "==" 判断
不能使用s1.equals( s2 ); 去判断
因为equals()方法判断的是“内容”而不是“地址”