黑马程序员技术交流社区

标题: "=="和equals方法究竟有什么区别? [打印本页]

作者: 仵先进    时间: 2012-2-16 21:56
标题: "=="和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等,equals难道只能比较字符串吗???
作者: 戚雪晖    时间: 2012-2-16 22:12
http://bbs.itheima.com/forum.php ... %3D17%26typeid%3D17
这里已经解释过了,楼主可以看这个帖子
作者: foxpeter    时间: 2012-2-16 22:12
== 比较的是引用是否相同
equals的默认实现也是比较的引用
不过可以自己重写equals方法 比如String类就重写了 重写之后可以按照自己的方式实现相等的比较
作者: 王康    时间: 2012-2-17 10:31
public class StringAPIDemo {
          public static void main(String[] args)
      {
              String str1="hello";        //String类型变量
              char c[]=str1.toCharArray();        //把字符串转换成字符数组
              for (int i=0;i<c.length ; i++)
              {
                      System.out.print(c+"\t");        //\t为制表符  h        e        l        l        o        
              }
              System.out.println("");        //换行
              String str2=new String(c);        //把数组转换成字符串
              String str3=new String(c,0,3);        //截取字符串str2,从下标0开始,截取3个字符长度的字符.
              System.out.println(str2);        //        hello
              System.out.println(str3);        //  hel
      }
}

java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
  他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
  对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

作者: 陈伟    时间: 2012-2-17 11:08
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
  他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
  对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
作者: 黄锦成    时间: 2012-2-17 16:39
equals可以用来比较Integer等包装类的内容。你也可以再自定义类中复写equals方法,按照自己的方式来比较
作者: 唐溪永    时间: 2012-2-17 16:59
本帖最后由 yiyong 于 2012-2-17 17:02 编辑

sun设计equals方法的目的是 比较两个对象是否相等;
public boolean equals(Object obj){
       return (this==obj);
}
==两边如果是两个引用类型,比较的是这两个引用的内存地址.如果内存地址一样,返回true,如果内存地址不同返回false.
equals方法比较的是两个对象的内存地址,但是实际应用中应该比较两个对象的内容.所以equals方法需要重写
==就像1=1似的,跟内存地址没多大关系,就是比较内容啦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2