当前位置:  技术问答>java相关

equals 和句柄??

    来源: 互联网  发布时间:2015-02-17

    本文导语:  class Value {   int i; } public class EqualsMethod2 {   public static void main(String[] args) {     Value v1 = new Value();     Value v2 = new Value();     v1.i = v2.i = 100;     System.out.println(v1.equals(v2)); 请问:为何打印结...

class Value {
  int i;
}

public class EqualsMethod2 {
  public static void main(String[] args) {
    Value v1 = new Value();
    Value v2 = new Value();
    v1.i = v2.i = 100;
    System.out.println(v1.equals(v2));

请问:为何打印结果是“false”。
若改为
    System.out.println(v1== v2);
结果又为???
句柄是什么?

    
  

|
句柄相当于指针。存的是对象的地址。
v1和v2是两个不同的对象,拥有不同的地址。
v1.equals(v2) 当然是false
System.out.println(v1== v2)也是false

|
equals方法返回的是boolean值,
功能是对比对象的地址,通过重载方法
当然也可以达到对比某个值的要求:
class Value {
  int i;
public boolean equals(Object o){
  return (((Value)o).i==i);
}
}
或者分行来写:
public boolean equals(Object o){
  int j=0;
  Value v = (Value)o;
  j=v.i;
  if(i==j) return true;
  return false;
    
}



|
This is because the default behavior of equals( ) is to compare references. So unless you override equals( ) in your new class you won’t get the desired behavior. 
Most of the Java library classes implement equals( ) so that it compares the contents of objects instead of their references.

明白吗?类Integer 内部已经override了equals方法了,所以就是你看到的这样子.

|
这些问题在《Thinking in Java》书中有详细的介绍,若要靠SCJP,最好还是将这本书通读几遍!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 equal_range():返回特殊条目的迭代器对
  • ==和equals()有多少区别,为什么if (chkfj=="you")和if (chkfj.equals(you))结果不一样
  • java命名空间javax.rmi.corba接口stubdelegate的类成员方法: equals定义及介绍
  • 问一个简单问题: if (key!=null && key.equals("TT")) 与if (key.equals("TT") && key!=null)这样的条件是相同的么?
  • java命名空间java.awt类displaymode的类成员方法: equals定义及介绍
  • ==与equals的区别?
  • java命名空间javax.swing枚举rowfilter.comparisontype的类成员方法: equal定义及介绍
  • 创建 OpenGL 应用的中间件 Equalizer
  • java命名空间javax.xml.datatype类datatypeconstants的类成员方法: equal定义及介绍
  • 请问String.equals()和String.equalsIgnoreCase()有什么区别啊?
  • C++ MultiMaps 成员 equal_range():返回指向元素的key为指定值的迭代器对
  • JSP中用于比较相等的equals方法,请指教!
  • java命名空间java.text类dateformat的类成员方法: equals定义及介绍
  • 看看会输出什么?结果是equal b,==在string里不是比较两个串是不是相等嘛?
  • java命名空间java.text类dateformatsymbols的类成员方法: equals定义及介绍
  • 请问,equals()与regionMatches()有什么区别?先道声谢了!
  • java命名空间java.text类decimalformatsymbols的类成员方法: equals定义及介绍
  • jQuery Music Equalizer
  • java命名空间java.text类parseposition的类成员方法: equals定义及介绍
  • 测试相等性,用==和equals有什么不同?
  • java命名空间java.text类decimalformat的类成员方法: equals定义及介绍
  • 请教关于equals的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3