java中==和 equal区别

马上就面临找工作了,最近从网上下载了大量的java笔记题,看到笔试题中有很多关于基本数据类型和引用类型相关的题目,以下为==和equals()的区别

明确概念:

对象的引用:当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称为该对象的实体,而对象中存放着引用(地址),以确保该实体由该对象操作使用。

一、比较对象为基本数据类型(byte,short,char,int,long,float,double,boolean)

比较两个基本数据类型是否相等用==,因为只有类才会有equals方法。

备注:String不是基本数据类型

二、比较对象为引用数据类型

euqals和==本质上都是比较比较的是两个对象的引用(内存地址)是否相同。equals()是Object类的方法 ,object类是所有类的基类,所以每个类都会继承equals()方法。

但在String,Integer,Date在这些类当中重写了equals方法,而不再是比较对象在堆内存中的存放地址了,而是比较它们指向的实体(内容)是否相同。


Example:

              Person p1=new Person();//使用new 关键字创建一个对象会为此对象分配内存空间。

              Person p2=null; //此对象还没有内存空间

              p2=p1;//此时p1和p2指向的是同一个内存空间 或说是指向同一个实体(内容)

             String s1 = "nihao";
             String s2 = "nihao";

            内存示意图


              s1==s2 //返回true,指向同一个内存空间,s1和s2为同一个对象

             s1.equals(s2)//返回true

             String s3=new String("nihao");
             String s4=new String("nihao");

           内存示意图:


             s3==s4//返回false,s3和s4分别指向不同的内存空间

             s3.equals(s4)//返回true,它比较的是两个字符串的内容


所以 对于引用类型之间进行equals比较,在没有覆写equals方法的情况下,还是比较它们在内存中的存放地址是否相同,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
以上为个人总结,若有错误之处,请大家批评指正。

         



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值