总结:计算机中字符串比较大小的规则

news/2025/3/4 7:33:06/

总结:计算机中字符串比较大小的规则

  • 一·背景:
  • 二·Unicode编码表:字符越靠后,对应的十进制值越大
  • 三·单个字符之间比较规则:
    • 1.Java编程中常用的Character类compareTo()方法比较单个字符大小:底层解析
    • 2·案例演示:单个字符与单个字符之间比较大小
      • (1)两个汉字所在编码表的位置:汉字一在汉字万的前面7位处,如下图所示
      • (2)使用计算机字符相减计算两个字符的相距的位数:完全满足单个字符之间比较规则,汉字“万”对应的十进制值较大,则说明汉字“万”比汉字“一”大
  • 四·两个字符串之间比较规则:
    • 1.Java编程中常用的String类compareTo()方法比较两个字符串大小:底层解析,完全满足两个字符串的比较规则
    • 2·案例演示:两个字符串之间进行比较大小
      • (1)两个字符所在编码表的位置:字符0在字符1的前面1位处,如下图所示
      • (2)使用计算机字符串比较结果:字符串“一1”比字符串“一0”大

一·背景:

1.网上很多教程都说的不完整,不明确,因此本人自己总结了一下

2.大家都知道,字符串比较的基本规则是按照字典顺序比较,但这个字典指的是什么呢?是新华字典还是英文字典?那如果是其他特殊字符又该如何比较大小呢?

二·Unicode编码表:字符越靠后,对应的十进制值越大

查看Unicode编码表工具网站:
http://www.hipenpal.com/tool/characters_to_unicode_charts_in_simplified_chinese.php?unicode=118

三·单个字符之间比较规则:

任何字符都是先获取字符在Unicode编码表中对应的十进制值,再比较两个字符对应的十进制值。哪个字符对应的十进制值大,则该字符就大,这也就是所谓的字典顺序比较大小

1.Java编程中常用的Character类compareTo()方法比较单个字符大小:底层解析

在这里插入图片描述

其实就是将前一个字符的十进制值减去后一个字符的十进制值,最后返回一个十进制数字;然后再根据这个返回的值去进行判断两个字符的大小或者进行字符排序(一般默认是Unicode编码表的字符排列顺序就是自然顺序或字典顺序,即字符越靠后,对应的十进制值越大,也叫字符越大)

注意:
(1)最后返回的数字表示:前一个字符相对于后一个字符在Unicode编码表中的位置关系。

(1-1)若前一个字符在后一个字符的前面则返回负数,且数字大小就是两个字符在Unicode编码表上相距的位数;
(1-2)若前一个字符在后一个字符的后面则返回正数,且数字大小就是两个字符在Unicode编码表上相距的位数;

(2)Unicode编码表里面包含各种英文、汉字、特殊字符等等

(3)大家口中常说的字符串比较是使用字典顺序,有时候也说是使用ASCII码表对应的值比较。先说结论,这两种说法是OK的但是不完整也不准确,且容易让初学者误解。这里的字典顺序并不是什么新华字典、英文字典等等,而是指的Unicode编码表;然而Unicode编码表是完全兼容ASCII表的,从ASCII编码表中获取英文字符对应的十进制值与从Unicode编码表中获取英文字符对应的十进制值是完全相等的,当然还有其他特殊字符等等也是如此;但是ASCII编码表由于是美国发明创建的,因此天生就不支持非英语国家的字符,尤其是没有中文字符。因此为了便于全球计算机互联互通,就得有个全球统一的字符集编码,这也就是大名鼎鼎的Unicode编码,也称“万国码”。但是其他字符集编码几乎没有被Unicode编码兼容,都需要进行相互转换才行。

2·案例演示:单个字符与单个字符之间比较大小

(1)两个汉字所在编码表的位置:汉字一在汉字万的前面7位处,如下图所示

在这里插入图片描述

(2)使用计算机字符相减计算两个字符的相距的位数:完全满足单个字符之间比较规则,汉字“万”对应的十进制值较大,则说明汉字“万”比汉字“一”大

在这里插入图片描述

四·两个字符串之间比较规则:

从两个字符串的开头,依次分别获取两个字符串的单个字符,再依据单个字符之间的比较规则,判断哪个字符大,则它所属的字符串就大;若两者的单个字符相等,则依次分别再取下一位单个字符,再进行比较,直到分出结果。

注意:
(1)“中1”跟“中”比较,第一位单个字符肯定相等,都取第二位单个字符时,明显第二个字符串没有第二位字符了;这种情况下计算机会默认用0代替,然后拿去跟另一个字符串的后续单个字符比较,直到比较出结果

1.Java编程中常用的String类compareTo()方法比较两个字符串大小:底层解析,完全满足两个字符串的比较规则

在这里插入图片描述

2·案例演示:两个字符串之间进行比较大小

(1)两个字符所在编码表的位置:字符0在字符1的前面1位处,如下图所示

在这里插入图片描述

(2)使用计算机字符串比较结果:字符串“一1”比字符串“一0”大

在这里插入图片描述


http://www.ppmy.cn/news/19520.html

相关文章

Day07 C++STL入门基础知识四——vector容器(上) 基本概念-构造函数-赋值操作-容量大小【全面深度剖析+例题代码展示】

Leave no stone unturned. 竭尽全力 文章目录1. 基本概念1.1 功能1.2 与普通数组相同点与不同点1.3 动态扩展2. 构造函数2.1 功能描述2.2 函数原型2.3 代码展示3. 赋值操作3.1 函数原型3.2 代码展示4. 容量及大小4.1 函数原型4.2 代码展示4.2.1 empty()4.2.1.1 代码展示4.2.1.2…

python列表用法

一、python列表用法 #codingutf-8list01[a,b,c,c,d,e,f,study,python]list01.append(hello) #追加列表元素,格式:列表名.append(追加元素),注意不用赋值给另一个变量,直接增加list01.insert(2,world) #指定位置添加元素 格式:列…

【LeetCode】计算右侧小于当前元素的个数 [H](归并排序)

315. 计算右侧小于当前元素的个数 - 力扣(LeetCode) 一、题目 给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例 1: …

【Kotlin】扩展函数 ③ ( 定义扩展文件 | 重命名扩展函数 | Kotlin 标准库扩展函数 )

文章目录一、定义扩展文件二、重命名扩展函数三、Kotlin 标准库扩展函数一、定义扩展文件 如果定义的 扩展函数 需要在 多个 Kotlin 代码文件 中使用 , 则需要在 单独的 Kotlin 文件 中定义 , 该文件被称为 扩展文件 ; 定义 标准库函数 的 Standard.kt 就是 独立的 扩展文件 ;…

AX7A200教程(4): DDR3的读写fifo仿真

在上篇博客中,我们只是进行突发读写,没有使用读写fifo对ddr3进行读写,因ddr3读写接口都是256位宽,所以ddr3的读写fifo输入和输出都是32位,和ddr3对接的接口都是256位,如下面示意图所示。下面的截图为ddr3的…

【计算几何】叉积

叉积 海伦公式求三角形面积 已知三角形三条边分别为a,b,c,设 pabc2p \frac{abc}{2}p2abc​, 那么三角形的面积为: p(p−a)(p−b)(p−c)\sqrt{p(p-a)(p-b)(p-c)}p(p−a)(p−b)(p−c)​ 缺点:在开根号的过程中精度损失 概念 两个…

【Hadoop】MapReduce原理剖析(Map,Shuffle,Reduce三阶段)

文章目录1. Map阶段1.1 把输入文件(夹)划分为很多InputSplit(Split)1.2 分配并执行map作业2. Shuffle阶段2.1 Partition(分区)2.2 Sort(排序)2.3 Group(分组)2.4 Combiner(规约)2.5 序列化并写入Linux磁盘内存2.6 反序列化读取数据到不同的reduce节点2.7 Reduce端数据进行合并、…

Qt扫盲- QTcpServer理论总结

QTcpServer理论总结一、概述二、注意事项一、概述 QTcpServer 这个类可以接受传入的TCP连接。 QTcpServer 其实就是一个 TCP 服务器 ,我们可以指定端口或让QTcpServer自动选择一个。你可以监听一个特定的地址,也可以监听所有机器的地址。当然常用的就是…