java 双等号(==) 与equals方法的介绍和区别

java 双等号(==) 与equals方法的介绍和区别

1.基本数据类型与equals方法

  1. == 用于比较基本数据类型时,比较的是值
  2. ==用于比较引用数据类型时,比较的是地址
  3. equals方法在Object类中比较的也是地址,因为在低层也是使用==进行比较
  4. String类调用equals方法比较的内容,因为String类对equals方法进行了重写,改为了比较字符串的内容
package com.qfedu.test2;
/*** == 与 equals方法区别* @author **/
public class Person {private String name;private String idCard;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getIdCard() {return idCard;}public void setIdCard(String idCard) {this.idCard = idCard;}public Person(String name, String idCard) {this.name = name;this.idCard = idCard;}public Person() {}public static void main(String[] args) {Person p1 = new Person("张三","abcd");Person p2 = new Person("张三","abc");//== 比较的是地址 falseSystem.out.println(p1 == p2);//Object类中equals方法低层使用的也是 == 所以比较的也是地址 打印false System.out.println(p1.equals(p2));System.out.println("======================");//String 也是一个类 可以创建对象并赋值String str1 = new String("abc");String str2 = new String("abc");//==比较的是地址  falseSystem.out.println(str1 == str2);//String 中重写的equals方法 比较的是内容 输出trueSystem.out.println(str1.equals(str2));}}

2.String类中:

  1. String 对象直接使用等号赋值,会将值存储在方法区的字符串常量池中

  2. String使用等号直接赋值时,在存放之前,会先检查常量池中是否有相同的字符串内容,如果存在,直接使用已存在字符串内容,如果不存在,将以一个新的地址存放在常量中

    注意:如果通过new对象进行赋值,每个对象都会是一个新的地址

public class Test1 {public static void main(String[] args) {//String 在方法区有一个存储字符串的常量池,存放之前会检查常量池是否存在,//存在的话直接使用,所以地址相同String str1 = "121";String str2 = "121";//new 对象直接在堆中 每次创建都会产生一个地址String str3 = new String("121");String str4 = new String("121");System.out.println(str1 == str2);System.out.println(str3 == str4);System.out.println(str2 == str3);}
}

3.整数包装类中

  1. 数值包装类,取值在byte(-128~127)之间,直接使用等号(=)赋值时,多个对象比较,结果为true,超过范围为false
  2. char类型也遵循这个规则
public class Test1 {public static void main(String[] args) {Integer i1 = 12;Integer i2 = 12;System.out.println(i1==i2);//true//浮点型不适用Double d1 = 12D;Double d2 = 12D;System.out.println(d1 == d2);//falseLong l1 = 123L;Long l2 = 123L;System.out.println(l1 == l2);//true}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

verilog时钟翻转怎么写_verilog实时可调时钟代码

module clock(clk,out,reset,cin,ocom,count,countmin,tgm,tdm,tgs,tds);output[3:0] ocom;output[7:0] out;output count,countmin;input cin,clk,reset;input tgm;//高位的分input tdm;//地位的分input tgs;//高位的秒input tds;//地位的秒reg [7:0] out_s;reg[7:0] out_min;…

Java ArrayList与LinkedList数据结构和特点

Java ArrayList与LinkedList数据结构和特点 1. ArrayList 数据结构: ArrayList低层是实现的是一个Object类型的数组(空间连续,类型相同)当我们调用ArrayList无参构造方法,将会创建一个Object类型的**空**数组当我们第…

多线程 循环 锁_大多数人还不清楚的iOS多线程

你不知道的的 iOS 多线程程序员用有限的生命去追求无限的知识。有言在先首先我不是故意要做标题党的,也不是我要炒冷饭,我只是想换个姿势看多线程,本文大部分内容在分析如何造死锁,奈何功力尚浅,然而再浅,也…

Java HashMap与Hashtable数据结构和特点+HashSet简述

Java HashMap与Hashtable数据结构和特点HashSet简述 1.HashMap HashMap就是基于数组和链表的数据结构:JDK1.7使用 数组单向链表;JDK1.8使用 数组单向链表红黑树 HashMap有两个重要的参数: 一个是负载因子 0.75:表示数组使用率达…

aj6 stamps storm_亲友限定的 AJ 6 要发了?3 月好鞋发售清单 for girls

原标题:亲友限定的 AJ 6 要发了?3 月好鞋发售清单 for girls🌸🌸🌸Air Jordan 1 Low Slip “Chicago”Color:Varsity Red/Black/WhiteStyle Code:BQ8462-601Price:$110adidas WMNS U…

学校为什么要单位接收函_学校、小区运动场为什么要选择塑胶跑道

随着人们生活水平的不断提高,科技的日新月异,各行各业都向着更加健康环保安全舒适的方向迈进。就拿小区、学校的运动场所地坪为例,传统的“沙土跑道”已经被运动塑胶跑道所替代。那么运动场为什么会选择塑胶跑道呢? 塑胶跑道又称全…

java中常见的专业术语单词缩写,看你认识几个

java中常见的专业术语单词缩写,看你认识几个 单词全称单词缩写中文意思备注Garbage CollectionGC垃圾回收Object Oriented ProgrammingOOP面向对象程序设计Document Object ModelDOM文档对象模型Browser Object ModelBOM游览器对象模型uniform resource locatorurl…

pitstop插件使用说明_【学员分享】程序员效率神器,最常用VIM插件安装大全

相信大家多次被推荐用vim作为编辑程序,知道vim编辑有很多优点,但是vim初始界面太原始了,安装了之后只能用来编辑,如果要运行就需要退出去运行,麻烦死了。回想用现成的IDE是多么的舒服。但是为了更好的学习,…

JVM思维导图、正则表达式符号图、企业内部开发流程图

JVM思维导图、正则表达式符号图、企业内部开发流程图 1.JVM思维导图: 2.正则表达式符号图: 3.企业内部开发流程图:

萧县机器人_全国总决赛第一名!萧县杨楼的这位学生厉害了

 提示:点击上方"萧县关注"↑免费订阅本刊点击上方关注我们,免费订阅更多精彩内容&…

关于JSP页面无法加载css,游览器访问jsp页面样式未生效导致乱序

关于JSP页面无法加载css,游览器访问jsp页面样式未生效导致乱序 1.修改自己过滤器中对编码格式的修改 如图: 代码如下: public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOE…

将视图转为image_JavaScript二进制数组(2)TypedArray视图

ArrayBuffer对象作为内存区域可以存放多种类型的数据。同一段内存,不同数据有不同的解读方式,这种解读方式称为“视图(view)”。ArrayBuffer有两种类型的视图,一种是类型化数组视图(TypedArray)…

八大基本数据类型、数组和包装类默认值

八大基本数据类型、数组和包装类默认值 1.八大基本数据类型 Java八种基本数据类型总结序号数据类型大小/字节封装类默认值可表示数据范围1byte1Byte0-128~1272short2Short0-32768~327673int4Integer0-2147483648~21474836474long8Long0-9223372036854775808~9223372036854775…

解决IDEA中maven工程的jsp、jstl依赖导入了 ,但是 jsp页面的uri却不提示(手动输上也报红)

解决IDEA中maven工程的jsp、jstl依赖导入了 ,但是 jsp页面的uri却不提示(手动输上也报红) 出现原因:idea内有缓存 解决办法:File --> Invalidate Caches / Restart… --> lnvalidate and Restart idea版本&#…

空格 过滤多个_CAD选择过滤器的运算符如何使用?

选择过滤器FILTER在CAD早期版本中是扩展工具的一个功能,到了高版本变成标配的功能,但在浩辰CAD的菜单或工具面板中我还找到选择过滤器的命令。浩辰CAD面板、右键菜单和特性面板倒是都提供了快速选择的功能,快速选择功能应该是借鉴选择过滤器开…

Java中各种常见的生命周期

Java中各种常见的生命周期 1.Spring bean的生命周期? ​ 1、Spring 容器根据配置中的 bean 定义中实例化 bean。 ​ 2、Spring 使用依赖注入填充所有属性,如 bean 中所定义的配置。 ​ 3、如果 bean 实现 BeanNameAware 接口,则工厂通过传…

各层作用_终于弄明白了 Singleton,Transient,Scoped 的作用域是如何实现的

一:背景1. 讲故事前几天有位朋友让我有时间分析一下 aspnetcore 中为什么向 ServiceCollection 中注入的 Class 可以做到 Singleton,Transient,Scoped,挺有意思,这篇就来聊一聊这一话题,自从 core 中有了 S…

权限管理系统_在Gitee狂揽11K Star!这个SpringCloud的权限管理系统你必须知道

SpringCloud 大家都很熟悉了,它作为一套完整的微服务解决方案,广受 Java 开发者们的好评, 今天就为大家介绍一款 Gitee 上的王牌项目,基于 SpringCloud 的权限管理系统——Pig。项目名称:Pig项目作者:pig4c…

导出排除的表_excel拆分实例:如何快速制作考勤统计分析表

编按:面对新的统计需求,很多人会一下变懵,不知如何办。如果涉及的统计有一千多行数据,哭的心思都有了:什么时候才能下班哟!今天老菜鸟通过考勤统计分析表实例分享自己面对新统计需求的解决方法:…

rds 如何学习数据库_如何将本地数据库迁移到云数据库 RDS 上?

使用数据传输服务 ( DTS ) 将本地数据库迁移到 阿里云的云数据库 RDS ,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。接下来我们将学习下如何使用 DTS 将本地数据库迁移到 RDS 上。背景DTS 支持 SQL Server 数据结构迁移和全量迁移。DTS 支持…