zoukankan      html  css  js  c++  java
  • java中 == 与equals 的区别

    ==与equals 的区别

    简介

      == 可以比较基本数据类型,也可以比较引用数据类型

        比较基本数据类型,比较的是

        比较引用数据类型,比较的是地址值

      equals 只能比较引用数据类型,比较的是引用数据类型的内容

    说明

      == 相当于实际生活中的等号(=),对于基本数据类型的变量来说,就是直接判断两个值是否相等

      在java中的基本数据类型   四类八种

        1、浮点型 :float(浮点型), double (双精度性)

        2、整型 : byte(字节型), short (短整型),  int(整型),  long(长整型)

        3、字符型 :char(字符型)

        4、布尔型 : boolean(布尔型)

    	// 定义两个变量
            int a = 20;
            int b = 20;    
            // 使用== 进行比较两个值是否相等,打印结果 :true
            System.out.println(a==b); 

      对于这八种基本数据类型的变量,可以直接使用 == 来比较变量的值

      而对于非基本数据类型的变量,在一些数据中称为 引用类型,比如String 

      对于引用类型存储变量,存储的并不是 “值” 本身,而是该值在内存中的地址。所以引用类型使用 == 进行比较的时候,比较的是变量值的地址值,并非 “值” 本身

     1     public boolean equals(Object anObject) {
     2         if (this == anObject) {
     3             return true;
     4         }
     5         if (anObject instanceof String) {
     6             String anotherString = (String) anObject;
     7             int n = value.length;
     8             if (n == anotherString.value.length) {
     9                 char v1[] = value;
    10                 char v2[] = anotherString.value;
    11                 int i = 0;
    12                 while (n-- != 0) {
    13                     if (v1[i] != v2[i])
    14                             return false;
    15                     i++;
    16                 }
    17                 return true;
    18             }
    19         }
    20         return false;
    21     }
    String 源码,重写equals

      equals 方法是Object中的方法,因此对于所有继承Object 的类,都会有该方法。

      从String 源码看出,String 重写了equals 方法,比较的是执行对象的内容

      若没有对equals 方法进行重写,则比较的是引用类型变量所指向的对象的地址

    作者:大角牛 出处:http://www.cnblogs.com/dajiaoniu/ 本博客中未标明转载的文章归作者大角牛和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    【Distributed】缓存技术
    【Redis】基本数据类型
    【Redis】安装、开启以及关闭
    【Ehcache】基础知识学习
    VS2012 改C# 模版
    C# Windows Services 启动和结束其它进程
    .net Console.ReadLine无效
    VS2012在解决方案资源管理器显示解决方案名称
    Mysql 数据库中9大对象
    C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件
  • 原文地址:https://www.cnblogs.com/dajiaoniu/p/10031841.html
Copyright © 2011-2022 走看看