java的equals和==的比较示例

 更新时间:2014年04月15日 09:39:29   作者:  
这篇文章主要介绍了java的equals和==的比较示例,需要的朋友可以参考下

先看例子:

复制代码 代码如下:

package com.amos;
/**
 * @ClassName: EqualTest
 * @Description:Java中的equal和==的比较
 * @author: amosli
 */
public class EqualTest {
    public static void main(String[] args) {
        int a = 1;
        float b = 1.0f;
        System.out.println(a == b);// true
        String c = new String("hi_amos");
        String d = new String("hi_amos");
        System.out.println(c == d);// false
        System.out.println(c.equals(d));// true
    }
}

Java中判断两个变量是否相等主要有两种判方式:一种是利用==运算符,另一种是利用equals方法来判断两者是否相同.

1).当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型,不要求数据类型严格相同,只要两个变量的值相等,那么将返回true.

2).如果对于两个引用类型变量,它们必须指向一个对象时,==判断才会返回true.==不可用于比较类型上没有父子关系的两个对象.

如上可以解释同样一new String时,==判断两者是否相同返回的是false,而equals返回的是true.

equals方法针对的String类,查看其源码,可以发现其实equals只能算是==的一种特例.如下面源码所示:

复制代码 代码如下:

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

equals方法实际上一开始就调用了==判别式,然后再判断其进一步值是否正确

相关文章

  • Java 多线程实例详解(三)

    Java 多线程实例详解(三)

    本文主要介绍 java 线程安全的知识,这里整理了相关资料及实现示例代码,有兴趣的小伙伴可以参考下
    2016-09-09
  • 基于mybatis like %%的问题

    基于mybatis like %%的问题

    这篇文章主要介绍了mybatis like %%的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 详解如何将springboot项目导出成war包

    详解如何将springboot项目导出成war包

    这篇文章主要介绍了详解如何将springboot项目导出成war包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • java模拟实现斗地主发牌小程序

    java模拟实现斗地主发牌小程序

    这篇文章主要为大家详细介绍了java模拟实现斗地主发牌小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • Springboot中使用Filter实现Header认证详解

    Springboot中使用Filter实现Header认证详解

    这篇文章主要介绍了Springboot中使用Filter实现Header认证详解,当在 web.xml 注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,它可以决定是否将请求继续传递给 Servlet 程序,以及对请求和响应消息是否进行修改,需要的朋友可以参考下
    2023-08-08
  • Java实现压缩图片大小

    Java实现压缩图片大小

    这篇文章主要为大家详细介绍了Java实现压缩图片大小,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • sharding-jdbc读写分离原理详细解析

    sharding-jdbc读写分离原理详细解析

    这篇文章主要介绍了sharding-jdbc读写分离原理详细解析,很多时候,为了应付DB的高并发读写,我们会采用读写分离技术,读写分离指的是利用数据库主从技术(把数据复制到多个节点中),分散读多个库以支持高并发的读,需要的朋友可以参考下
    2023-12-12
  • JDBC数据库连接过程及驱动加载与设计模式详解

    JDBC数据库连接过程及驱动加载与设计模式详解

    这篇文章主要介绍了JDBC数据库连接过程及驱动加载与设计模式详解,需要的朋友可以参考下
    2016-10-10
  • 浅谈使用java实现阿里云消息队列简单封装

    浅谈使用java实现阿里云消息队列简单封装

    这篇文章主要介绍了浅谈使用java实现阿里云消息队列简单封装,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java如何获取真实请求IP

    Java如何获取真实请求IP

    这篇文章主要介绍了Java如何获取真实请求IP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论