zoukankan      html  css  js  c++  java
  • 一、基础篇--1.1Java基础-equals与==的区别

    ==:

      ==比较的是变量内存中存放的对象的内存地址,用来判断两个对象地址是否相同,比较的是否是同一个对象。

      1、两边的操作数必须是同一类型,不然编译不通过。

      2、如果是基本数据类型比较,值相等则为true。因为基本类型不存在引用的概念,都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间。

    equals:

      equals比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有的对象。如果没有对equals方法重写,调用的就是Object类的equals方法。而Object中的equals方法返回的是==的判断。

    equals和==的区别:

      由equals的源码可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只能从Object类中继承equals方法,其equals方法与==就也是等效的,除非我们在此类中重写equals。

      重写equals必须满足它的5点特性:

        (1)自反性:对于任何非空引用x,x.equals(x)应该返回true;

        (2)对称性:对于任何引用x,和y,当且仅当,y.equals(x)返回true,x.equals(y)也应该返回true;

        (3)传递性:对于任何引用x,y,z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true;

        (4)一致性:如果x,y引用的对象没有发生变化,反复调用x.equals(y)应该返回同样的结果;

        (5)对于任意非空引用x,x.equals(null)返回false;

      另外,"=="比"equals"运行速度快,因为"=="只是比较引用。

     

      

  • 相关阅读:
    layui弹出层使用方法之最详解
    rem实现简单的响应式布局
    layui数据库查询及数据处理
    header头设置解决 “已拦截跨源请求:同源策略禁止读取位于 http://back/test/test 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。”
    mysql多表联查
    centos 7 安装独立环境 tcp6占用80端口解决方法
    JS for_of遍历数组
    通过几张图搞定json数据处理
    MQTT Broker mosquitto
    前言
  • 原文地址:https://www.cnblogs.com/foreverYoungCoder/p/10302997.html
Copyright © 2011-2022 走看看