A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仵先进 中级黑马   /  2012-2-16 21:56  /  2768 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

==操作符专门用来比较变量的值是否相等,equals难道只能比较字符串吗???

评分

参与人数 1技术分 +1 收起 理由
admin + 1 提问前,可以先看下论坛有人问过没哦!.

查看全部评分

6 个回复

倒序浏览
http://bbs.itheima.com/forum.php ... %3D17%26typeid%3D17
这里已经解释过了,楼主可以看这个帖子

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
== 比较的是引用是否相同
equals的默认实现也是比较的引用
不过可以自己重写equals方法 比如String类就重写了 重写之后可以按照自己的方式实现相等的比较

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
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方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
回复 使用道具 举报
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
  他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
  对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
回复 使用道具 举报
equals可以用来比较Integer等包装类的内容。你也可以再自定义类中复写equals方法,按照自己的方式来比较
回复 使用道具 举报
唐溪永 黑马帝 2012-2-17 16:59:40
7#
本帖最后由 yiyong 于 2012-2-17 17:02 编辑

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