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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© __________Just 中级黑马   /  2014-10-19 18:31  /  1942 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

"=="和equals方法有什么区别啊?

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

11 个回复

倒序浏览
如果是基本类型比较,那么只能用==来比较,不能用equals.
例如
int a = 3;
int b = 4;
System.out.println(a == b);//可以比较,编译没问题.
System.out.println(a.equals(c));//错误,编译不能通过,equals方法



对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较内存地址的,而equals是比较变量内容的。

点评

谢了。。  发表于 2014-10-19 19:40
回复 使用道具 举报
== 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
equals()方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。
回复 使用道具 举报
简单来说,==是比较两个是不是同一地址,而 equal是比较两个内容是否相同
回复 使用道具 举报
==比较的是内存地址,equals比较的是内容
回复 使用道具 举报
wf111sxwf 来自手机 中级黑马 2014-10-19 20:01:01
地板
==比较的是哈希码值equals就看对象的具体方法了一般是比较对象内容的
回复 使用道具 举报
首先,equals(Object obj)是Object中的方法,在Object里,比较的是两个对象的内存地址。对于基本数据类型的包装类,又重写了这个方法,在这些类中,比较的是两个对象中存储的内容。
而"=="用于基本数据类型值的比较。
回复 使用道具 举报
hanxing 中级黑马 2014-10-19 20:23:28
8#
==能做的事 1.引用类型的比较(是否指向同一对象)2.基本数据类型的比较  例:int a=5; if(a==6){…}
equals:只能比较引用类型,
另:当用equals()方法进行比较时,对类File、String、Date及封装类(Wrapper Class)来说,是比较类型及内容而不考虑引用的是否是同一个对象;原因:在这些类中覆盖了equals()方法。
        Person person1 = new Person("AA", 12);  
        Person person2 = new Person("AA", 12);  
        System.out.println(person1 == person2); // flase   
        System.out.println(person1.equals(person2));// flase   
  
        String str1 = new String("aaa");  
        String str2 = new String("aaa");  
        System.out.println(str1 == str2);// flase   
        System.out.println(str1.equals(str2));// true  

        String str3 = "bbb";  
        String str4 = "bbb";  
        System.out.println(str3 == str4);// true  
        System.out.println(str3.equals(str4));// true
回复 使用道具 举报
equals是==的扩展,都是用来做比较的,不过equals是根据你自己的意愿来做比较,初始的都是比较地址,但只比较地址无法满足我们的要求,这样就可以通过equals来自定义我们需要的比较方法。
回复 使用道具 举报
==比较的是地址,而equals比较的是对象
回复 使用道具 举报
一个是变量用一个是对象用,个人理解,可以忽视
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马