码迷,mamicode.com
首页 > 编程语言 > 详细

Java中==和equals和区别详解+案例

时间:2018-01-27 13:49:59      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:byte   inf   字符串   基本数据   boolean   图片   img   integer   数据   

一开始遇见==和equals我也是分不清,后来看了很多博客,收益匪浅,

担心以后给忘了,所以写下这个,以后复习可以用。

(有哪里写得不对的,希望可以留言帮忙改进,大家一起共同进步)

一、Java数据类型一共分为两大类:基本数据类型、引用数据类型:

  1.基本数据类型:

    整数型:

      整型:byte、short、int、long

     浮点型:float、double

    字符型:char

    布尔型:boolean

  2.引用数据类型:

    数组、类、接口

二、基本数据类型的比较

   基本类型的比较只能用==比较,没办法用equals比较,没有该方法,包装类才有

  技术分享图片

三、基本类型和包装类型的比较

  装箱:int-->Integer,拆箱:Integer-->int

  1.基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较

  2.关于equals的比较,我们先看下它的源码

  这个是Object的equals源码,很明显是比较两个的地址是否一样

  技术分享图片

  这个是Integer的equals,说明他重写了object的源码,他是先比较类型是否一样,

  如果类型不一样直接返回false,如果类型一样,他会先进行拆箱后再比较。

  技术分享图片

  int和Integer的比较实例

  技术分享图片  

四、String类型的比较

   1.String关于==的比较是看他的地址是不是一样,但是String他比较特殊,他有个字符串常量池,直接定义字符串(不是new的情况)

   他会先到字符串常量池看之前有没有,有就直接指向之前的。没有就创建(指的是new)。

    2.equals:因为String继承了Object的equals并重写了equals.看下面的源码,我们可以看出来,他是先判断是不是同一对象,如果是直接返回true,

     如果不是他就比较内容是否一致。

    技术分享图片

    String比较实例

  技术分享图片

五、引用类型的比较

  引用类型的比较最直接无论是==还是equals都是比较地址

  这是equals源码

  技术分享图片

   比较案例

   技术分享图片

    

Java中==和equals和区别详解+案例

标签:byte   inf   字符串   基本数据   boolean   图片   img   integer   数据   

原文地址:https://www.cnblogs.com/Fence-Zzy/p/8365187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!