zoukankan      html  css  js  c++  java
  • equals()和==的区别

    equals()和==的区别
    总结:
     
      1)对于==,比较的是 值 是否相等
                如果作用于  基本数据类型  的变量,则直接比较其  存储的 “值”  是否相等;
        如果作用于  引用类型  的变量,则比较的是  所指向的对象的地址
      2)对于equals方法,
      注意:equals方法不能作用于  基本数据类型的变量,
         equals继承Object类,比较的是是否是  同一个对象
        如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
        诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
    注:不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同
    好记:
    == 的作用
      基本类型:比较  值  是否相同
      引用类型:比较  地址值堆内存地址) 是否相同
    equals 的作用:
      引用类型:默认情况下,比较的是  地址值
      equals方法 不能 作用于  基本数据类型的变量
    对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟双等号(==)的结果相同;如果被复写,按照复写的要求来。
     

    一、java当中的数据类型和“==”的含义:

    • 基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值。
    • 引用数据类型(即复合数据类型(类) ):当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。所以除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。

      对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

    二、 String类的equals()方法:

    解释比较  字符串  中“==”和equals()的区别?

    •  ==:比较的是两个字符串  内存地址(堆内存)的数值是否相等,属于数值比较;
    •  equals():比较的是两个字符串的  内容,属于内容比较。

    好记总结:

    ==比较的是  两个对象的地址

    equals ()比较的是  两个对象的内容

    以后进行字符串相等判断的时候都使用equals()。

    参考博客:

    http://www.cnblogs.com/smyhvae/p/3929585.html

     http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html

    http://www.cnblogs.com/zhxhdean/archive/2011/03/26/1996468.html

    http://www.cnblogs.com/zhxhdean/archive/2011/03/26/1996468.html

  • 相关阅读:
    docker基础概念
    面试题
    python总结【来自Runoob】
    如何实现在分组的情况下,以另一个时间字段查询出结果?
    Java FIle类和IO流
    HTML5 基础知识(1)——基本标签
    数据库个人笔记(3) -- 基础篇
    数据库个人笔记(2) -- 基础篇
    数据库个人笔记(1)-- 基础篇
    python 基础学习笔记(8)--装饰器
  • 原文地址:https://www.cnblogs.com/2549372994jing/p/10531561.html
Copyright © 2011-2022 走看看