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

关于equals()的问题

    来源: 互联网  发布时间:2017-03-31

    本文导语:  在thinking in java  里有一段程序,我看不懂的是equal的用法  class Value {    int i;  }  public class EqualsMethods {    public void main(String[] args)     {        Value v1=new Value(); Value v2=new Value(); v1.i=v2.i=100; System....

在thinking in java  里有一段程序,我看不懂的是equal的用法


 class Value
{
   int i; 
}

 public class EqualsMethods
{

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

书上说输出是false。
eauals ()比较的是句柄,但是这里句柄不一样吗?
请教各位了!
不胜感激!

|
class Value
{
   int i; 
}

 public class EqualsMethods
{

   public static void main(String[] args)
    {
      
Value v1=new Value();
Value v2=new Value();

v1.i = v2.i = 100;
System.out.println(v1.i);
System.out.println(v2.i);

System.out.println(v1);
System.out.println(v2);

System.out.println(v1.equals(v2));
    }
}


这样你就清楚了,

v1.equals(v2)的时间,比较的是v1和v2的值,作为用户自定义类型(类)的话,比较的是对象声明构建以后所在的地址。

|
呵呵,这个基本问题有必要说清楚:
== 对于原始类型比较的是值,对于引用类型比较的是句柄(其实句柄也是值)
equal 是java.lang.Object的方法,源码:
    public boolean equals(Object obj) {
return (this == obj);
    }
也就是说,如果我们的类没有覆盖equals方法,那么效果跟==一样
          如果我们的类覆盖了equals方法,那么效果就是你自己定义的了,像String类,覆盖了equals方法,判断并返回两者的内容是否一致。

搂主的举的例子肯定是false,如果返回了true,那么可以向你的jre的厂商举报bug了

|
equals()方法必须重载才有用,对于java本身的程序库来说每个类几乎都可以使用equals()方法,因为在那些类里面已经将他重载,在上面你自己定义的类中,你没有重载equals()方法,所以他不能执行你期望的比较!

|
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true). 

JDK的help上写得很明白.

|
Value v1=new Value();
Value v2=new Value();
v1.i=v2.i=100;
V1,V2的地址一樣嗎?
Value();又沒有對equals做重載

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












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


  • 站内导航:


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

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

    浙ICP备11055608号-3