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

java_string比较中的细节

string比较中为什么不用“==”而是选择用“equals()语法”

两种string字符串生成方式

  1. 直接使用字符串字面赋值
    如:String s1 = "zhoujiale";
    此类型中,计算机在“串池(位于常量池中)”中创造空间“zhoujiale”
  2. 利用new的方式创建字符串
    如:String s2=new string("zhoujiale");

“==”和“equals()语法”的区别

  1. ==
    在两种不同空间的方式下创造的字符串时,哪怕字符串本身字母相同,本质上还是两种不同的字符串
    所以上述的“s1”和“s2”在“==”时判定为false
    2.“equals()语法”
    equals() 方法可以确保无论字符串对象位于内存的哪个区域(常量池或堆)
    只要内容相同,就会返回 “true”

本质:为什么写代码时用“equals()语法”

  • 在做项目时,如“用户登录”,需要用到scanner类
    scanner类生成字符串的底层逻辑是在“堆”里生成的
  • 我们一般在定义字符串是用第一种方式,即String s1 = "zhoujiale";是在“常量池”定义的
  • 代码用“==”时,哪怕字符串输入正确,因为本质不同,结果依旧是 false
  • 代码用“equals()语法”时,只比较字符串内容是否正确,不需要考虑本质定义问题
    字符串输入正确,true
    字符串输入错误,false
http://www.hskmm.com/?act=detail&tid=16190

相关文章:

  • 扫描线学习笔记
  • go-reids
  • AI完美声音克隆及情绪控制,与真人无异,Lark下载介绍
  • WSL,适用于 Linux 的 Windows 子系统
  • 9-24
  • 代码随想录算法训练营第八天 |344.反转字符串、541. 反转字符串II、LCR 122. 路径加密
  • 9/24
  • 安装与卸载JDK8
  • mysql慢sql配置
  • Linux zdb -C (zfs Debugger调试器)
  • 从零开始实现简易版Netty(八) MyNetty 实现Small规格的池化内存分配
  • 测试脚本
  • 自动化测试脚本
  • 解题报告-字符串(str.*)
  • Linux 系统中的 /dev/disk/by-id/目录作用详解
  • glTF/glb:您需要知道的一切,怎么免费获取下载
  • keepalived服务器
  • P8818 [CSP-S 2022] 策略游戏
  • FortiGate连接中国联通SDWAN
  • 第五章 运算符、表达式和语句
  • 学习问题日记-2
  • 封神台复现
  • 李之一的Java第一作
  • 2025.9.24 闲话:Lucas 定理究极证明
  • Are English people good or bad
  • 9
  • Lampiao靶场渗透wp-脏牛提权
  • 画矩形
  • NOIP 模拟赛八
  • 第三篇