当前位置: 首页 > news >正文

【java学习—八】==操作符与equals方法(2)

文章目录

  • 1. ==操作符
  • 2. equals方法
  • String对象的创建


1. ==操作符

(1)基本类型比较值 : 只要两个变量的值相等,即为 true.
int a=5; if(a==6){…}

(2)引用类型比较引用 ( 是否指向同一个对象 ): 只有指向同一个对象时,==才返回 true.

		Person p1 = new Person();Person p2 = new Person();System.out.println(p1 == p2);//输出:false

注意:用“ ==” 进行比较时,符号两边的数据类型必须兼容 ( 可自动转换的基本数据类型除外 ) ,否则编译出错;

2. equals方法

equals():所有类都继承了 Object ,也就获得了 equals() 方法。还可以重写。
(1) 只能比较引用类型,其作用与“ ==” 相同 , 比较是否指向同一个对象。格式 :obj1.equals(obj2)

		Person p1 = new Person();Person p2 = new Person();System.out.println(p1 == p2);//falseSystem.out.println(p1.equals(p2));//false

特例
当用 equals() 方法进行比较时,对类File 、String 、Date及包装类( Wrapper Class )来说,是比较类型及内容不考虑引用的是否是同一个对象。原因是在这些类中重写了 Object 类的 equals() 方法。

		String s1 = new String("abc");String s2 = new String("abc");System.out.println(s1 == s2);//falseSystem.out.println(s1.equals(s2));//true

结论:
对于对象来说:
特殊的类,如String、File、Data,使用==比较的是对象(对象的地址),equals比较的是内容
②除了特殊的类之外的其他普通的类的对象,==和equals比较的都是对象(对象的内存地址)。
③如果你想改变某一个类的equals,不想用equals来比较对象的内存地址,就需要重写equals方法

String对象的创建

(1)字面量创建String对象

String s1 = "abc"; //常量池中添加“abc”对象,返回引用地址给s1对象
String s2 = "abc"; //通过equals()方法判断常量池中已有值为abc的对象,返回相同的引用。
System.out.println(s1 == s2);//true 所以s1 == s2

(2)new创建String对象

		String s3 = new String("def");//在常量池中添加“def”对象,在堆中创建值为“def”的对象s3,返回指向堆中s3的引用String s4 = new String("def");//常量池中已有值为“def”的对象,不做处理,在堆中创建值为“def”的对象s4,返回指向堆中的s4的引用

(差一张截图)

http://www.lryc.cn/news/198491.html

相关文章:

  • Linux系统编程_进程间通信第1天:IPC、无名管道pipe和命名管道mkfifo(半双工)、消息队列msgget(全双工)
  • figma+windows系统
  • typescript实现一个简单的区块链
  • 服务器被暴力破解怎么解决
  • 用来生成二维矩阵的dcgan
  • 免费的国产数据集成平台推荐
  • 【yolov8系列】yolov8的目标检测、实例分割、关节点估计的原理解析
  • 5256C 5G终端综合测试仪
  • Springboot Actuator 环境搭建踩坑
  • Vue-3.3ESLint
  • STROBE-MR
  • Hive安装配置 - 内嵌模式
  • html中登录按钮添加回车键登录
  • PCL 空间两平面交线计算
  • 交替合并字符串
  • Linux考试复习整理
  • 基于geojson-vt和canvas的高性能出图
  • CTF是黑客大赛?新手如何入门CTF?
  • 电脑开不了机用U盘重装系统Win10教程
  • 四叉堆在GO中的应用-定时任务timer
  • Flow深入浅出系列之使用Kotlin Flow自动刷新Android数据的策略
  • AC修炼计划(AtCoder Regular Contest 165)
  • 【Express】登录鉴权 JWT
  • 【微服务 SpringCloud】实用篇 · Ribbon负载均衡
  • zabbix-proxy代理服务器配置
  • 【python零基础入门学习】python进阶篇之OOP - 面向对象的程序设计
  • 中国xx集团信息技术工程师面试
  • Jmeter接口自动化测试 —— Jmeter下载安装及入门
  • ARM 学习笔记2 初识Cortex-M33与STM32G4
  • vue中使用coordtransform 互相转换坐标系