当前位置:编程学习 > JAVA >>

java里面如何判断两个引用是否指向同一个值?

求各位大大解答一下小菜鸟的疑问,感激不尽 --------------------编程问答-------------------- 直接用==判断下即可

Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = obj1;

System.out.println(obj1 == obj2);
System.out.println(obj1 == obj3); --------------------编程问答-------------------- 是不是引用同一个值用 ==判断就行了,1楼连例子都给出了 --------------------编程问答-------------------- hashcode 是不是也可以直观看出是不是一个地址 --------------------编程问答-------------------- 1楼正解 --------------------编程问答-------------------- 1楼正解。具体说就是obj1、obj2、obj3都是指向具体对象的地址,如果他们指向同一个对象,那么地址必然相同。用"=="直接比较久可以了。 --------------------编程问答-------------------- 恩,这样就可以了
引用 1 楼 ticmy 的回复:
直接用==判断下即可

Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = obj1;

System.out.println(obj1 == obj2);
System.out.println(obj1 == obj3);


--------------------
http://www.qinglobo.com/qklist-5.htm --------------------编程问答--------------------
引用 3 楼 zhoujiaolongde 的回复:
hashcode 是不是也可以直观看出是不是一个地址

不可以哦,同一个引用的hashcode在极大多数情况应该是相同的,而值不同或者值相同但不是同一个引用的hashcode也可能是相同的,所以不能用来看地址

lz直接输出对象,如果没有重载toString和hashcode方法的话,
System.out.println(obj1);
System.out.println(obj2);
会发现@符号后面带的地址是一样的 --------------------编程问答-------------------- ==和hashcode都可以 --------------------编程问答--------------------
引用 1 楼 ticmy 的回复:
直接用==判断下即可

Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = obj1;

System.out.println(obj1 == obj2);
System.out.println(obj1 == obj3);


正解,还可以使用hashcode也可以,地址相同即是引用相同 --------------------编程问答-------------------- 1楼正解,== 即可 --------------------编程问答--------------------
System.out.println("buzzards".hashCode() == "righto".hashCode());
System.out.println("hierarch".hashCode() == "crinolines".hashCode());


引用 8 楼 arvon009 的回复:
==和hashcode都可以
--------------------编程问答--------------------
引用 8 楼 arvon009 的回复:
==和hashcode都可以


楼上的说 hashcode 的不要误导别人
hashcode :
只要求相同对象的 hashcode 一样
并不保证不同对象的 hashcode 不一样
即,有可能不同对象的 hashcode 是一样的 --------------------编程问答-------------------- 其实lz是想问==和equals的区别吧
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量本身也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是一个内存,此时,变量所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的
--------------------编程问答-------------------- --------------------编程问答--------------------

   1楼正解,== 即可
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,