首页 > 编程语言 >Java中==和equals有什么区别

Java中==和equals有什么区别

时间:2024-02-19 13:55:08浏览次数:32  
标签:Java 区别 对象 Object 数据类型 equals 比较

原文网址:​​Java中==和equals有什么区别_IT利刃出鞘的博客-CSDN博客​

简介

本文介绍java中==和equals的区别。

分享Java技术星球(自学精灵),有面试真题和架构技术等:​​https://learn.skyofit.com/​

区别

区别是:一个是运算符,一个是方法。

==

比较变量的值是否相同。

  • 如果比较的对象是基本数据类型,则比较数值是否相等;
  • 如果比较的是引用数据类型,则比较的是对象的内存地址是否相等。

因为Java只有值传递,对于==来说,不管是比较基本数据类型,还是引用数据类型的变量,其比较的都是值,只是引用类型变量存的值是对象的地址。引用类型对象变量其实是一个引用,它们的值是指向对象所在的内存地址。

equals方法

比较对象的内容是否相同。

equals()方法存在于Object类中,而Object类是所有类的父类。在Object类中定义了equals方法:

public boolean equals(Object obj) {
    return (this == obj);
}
  1. 如果类未重写equals方法
  1. 调用equals时,会调用Object中的equals方法(实际使用的也是==操作符)
  1. 如果类重写了equals方法
  1. 调用equals时,会调用该类自己的equals方法(一般是比较对象的内容是否相同)。比如:
  1. String:比较字符串内容是否相同;
  2. Integer:比较对应的基本数据类型int的值是否相同。

 

标签:Java,区别,对象,Object,数据类型,equals,比较
From: https://www.cnblogs.com/knifeblade/p/18020937

相关文章

  • 在script标签写export为什么会抛错|type module import ES5 ES6 预处理 指令序言 JavaS
    今天我们进入到语法部分的学习。在讲解具体的语法结构之前,这一堂课我首先要给你介绍一下JavaScript语法的一些基本规则。脚本和模块首先,JavaScript有两种源文件,一种叫做脚本,一种叫做模块。这个区分是在ES6引入了模块机制开始的,在ES5和之前的版本中,就只有一种源文件类型(就......
  • for 循环 和 while循环的区别
     001、for循环:for循环的终止条件在for语句后面已经提前已知[root@pc1test1]#for((i=1;i<=3;i++));doecho$i;done##终止条件i<=3;i的变化规律;提前已知123 002、while循环;while循环的终止条件是在循环体中动态变化的[root@pc1test1]#i=1[roo......
  • while循环与until循环的区别
     001、while循环:条件满足一直执行[root@pc1test1]#i=1##条件满足,一直执行[root@pc1test1]#while[[$i-le3]];doecho$i;i=$((i+1));done123 002、until循环;条件不满足一直执行[root@pc1test1]#i=1##条件不满足,一直执行,与while循环相......
  • Java方法重写与重载
    一、方法重载(overload)概念方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载 多个方法在同一个类中 多个方法具有相同的方法名 多个方法的参数不相同,类型不同或者数量不同 所谓方法重载就是指我们可以定义一些名称相同的方法,通过定......
  • java普通项目转springboot项目
    添加启动类@SpringBootApplicationpublicclassSpringBootMain{publicstaticvoidmain(String[]args){SpringApplication.run(SpringBootMain.class,args);}}添加依赖<parent><groupId>org.springframework.boot</grou......
  • java 日期计算
      importjava.util.Calendar;publicclassMain{publicstaticvoidmain(String[]args){//创建一个Calendar对象并设置为当前时间Calendarcalendar=Calendar.getInstance();//获取当前年份、月份和日期inty......
  • 一位普通Javaer的成长之路
    前言此文章用于记录自己作为Java开发者的成长历程永远置顶于我的博客为什么要做Java其实本来是想学C#做桌面应用程序的,奈何Java的火热和易上手,加上好找工作些,所以入行了Java当然,也不影响我现在偶尔会学学C#,做windows下的桌面应用程序以《斗破苍穹》的斗气段位来代表计算机专......
  • JAVA基础-正则表达式
    1,正则表达式  正则表达式,又称规则表达式,(RegularExpression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用......
  • JAVA基础-类的成员
    1.类的成员-属性属性这里就是成员变量,也叫成员变量,直接定义在类中的。在方法体外声明的变量称之为成员变量实例变量(不以static修饰)类变量(以static修饰)在方法体内部声明的变量称之为局部变量形参(方法、构造器中定义的变量)方法局部变量(在方法体内定义)代码块变量(在代码......
  • JAVA基础-内存与垃圾回收
    1,运行时数据区1,程序计数器线程私有。生命周期:生命周期与线程同步。作用:它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。特点:它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域,唯一没有OutofMemory......