Java字符串比较的三种方式(相等比较,大小比较)

目录

1.相等比较

[equals() 方法](#equals() 方法)

[equalsIgnoreCase() 方法](#equalsIgnoreCase() 方法)

2.大小比较

[compareTo() 方法](#compareTo() 方法)

字典顺序比较规则:


1.相等比较

equals() 方法

equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,它返回 true,否则返回 false。对于字符的大小写,也在检查的范围之内。equals() 方法的语法格式如下:

str1.equals(str2);

equalsIgnoreCase() 方法

equalsIgnoreCase() 方法的作用和语法与 equals() 方法完全相同,唯一不同的是equalsIgnoreCase() 比较时不区分大小写。

2.大小比较

compareTo() 方法

通常,仅仅知道两个字符串是否相同是不够的。对于排序应用来说,必须知道一个字符串是大于、等于还是小于另一个。一个字符串小于另一个指的是它在字典中先出现。而一个字符串大于另一个指的是它在字典中后出现。

compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值

compareTo() 方法的语法格式如下:

str.compareTo(String otherstr);

它会按字典顺序将 str 表示的字符序列与 otherstr 参数表示的字符序列进行比较。如果按字典顺序 str 位于 otherster 参数之前 ,比较结果为一个负整数 ;如果 str 位于 otherstr 之后 ,比较结果为 一个正整数 ;如果两个字符串相等 ,则结果为 0

字典顺序比较规则:

字符串按照字典顺序(lexicographical order)进行比较,并不是仅仅比较第一个字母,而是逐个字符进行比较,直到找到不同的字符或者比较完所有字符。字典顺序比较的规则如下:

  1. 字符比较 :从两个字符串的开始位置(即第一个字符)进行比较,比较它们的Unicode值。如果字符不同 ,则比较结果由第一个不同的字符的Unicode值决定
  2. 长度比较:如果第一个字符相同,则比较下一个字符,依此类推。如果两个字符串在某个位置的字符相同,则比较下一个位置的字符。
  3. 终止条件 :如果两个字符串在某个位置之前的所有字符都相同 ,但一个字符串在该位置之后没有更多的字符,则较短的字符串被认为是"小于"较长的字符串。

举例:

"apple" 和 "banana":比较第一个字符 'a' 和 'b',因为 'a' 的Unicode值小于 'b',所以 "apple" 小于 "banana"。
考虑两个字符串 "apple" 和 "applet":

  • 首先比较第一个字符:'a' 和 'a',它们相同。
  • 然后比较第二个字符:'p' 和 'p',它们相同。
  • 接着比较第三个字符:'p' 和 'p',它们相同。
  • 再比较第四个字符:'l' 和 'l',它们相同。
  • 最后比较第五个字符:'e' 和 't','e' 的Unicode值小于 't' 的Unicode值。

因此,根据字典顺序,"apple" 小于 "applet"。

相关推荐
jinanwuhuaguo4 分钟前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup37 分钟前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
952361 小时前
SpringBoot统一功能处理
java·spring boot·后端
有一个好名字1 小时前
工具即双手 —— 从 Bash 到 Tool Dispatch Map
开发语言·chrome·bash
Lyyaoo.1 小时前
优惠券秒杀业务分析
java·开发语言
消失的旧时光-19431 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
勿忘初心12211 小时前
Java 国密 SM4 加密工具类实战(Hutool + BouncyCastle)|企业级数据加密 + 兼容 JDK8
java·数据安全·数据加密·后端开发·企业级开发·国密 sm4
庞轩px1 小时前
第8篇:原子类与CAS底层原理——无锁并发的实现
java·cas·乐观锁·aba·无锁编程·自旋
rleS IONS1 小时前
SpringBoot中自定义Starter
java·spring boot·后端
DevilSeagull2 小时前
MySQL(2) 客户端工具和建库
开发语言·数据库·后端·mysql·服务