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

news2025/1/16 12:48:20

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

  • 一·背景:
  • 二·Unicode编码表:字符越靠后,对应的十进制值越大
  • 三·单个字符之间比较规则:
  • 四·案例演示:单个字符与单个字符之间比较大小
    • 1.前提:汉字“一”与汉字“万”,进行大小比较。
    • 2.两个汉字所在编码表的位置:汉字一在汉字万的前面7位处,如下图所示
    • 3.使用计算机字符相减计算两个字符的相距的位数:完全满足单个字符之间比较规则
    • 4.Character包装类的底层compare方法源码,本质也是将两个字符的十进制值进行相减,然后返回两个值的差;从而再进行判断两个字符的大小或者字符排序
  • 五·两个字符串之间比较规则:
  • 六·案例演示:两个字符串之间进行比较大小
    • 1.两个字符所在编码表的位置:字符0在字符1的前面1位处,如下图所示
    • 2.使用计算机字符串比较结果:

一·背景:

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

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

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

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

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

任何字符都是先获取字符在Unicode编码表中对应的十进制值,再将前一个字符的十进制值减去后一个字符的十进制值,最后会得到一个十进制数字;最后再根据这个返回的值去进行判断两个字符的大小或者进行字符排序(一般默认是Unicode编码表的字符排列顺序就是自然顺序或字典顺序,即字符越靠后,对应的十进制值越大)

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

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

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

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

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

1.前提:汉字“一”与汉字“万”,进行大小比较。

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

在这里插入图片描述

3.使用计算机字符相减计算两个字符的相距的位数:完全满足单个字符之间比较规则

在这里插入图片描述

4.Character包装类的底层compare方法源码,本质也是将两个字符的十进制值进行相减,然后返回两个值的差;从而再进行判断两个字符的大小或者字符排序

在这里插入图片描述

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

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

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

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

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

在这里插入图片描述

2.使用计算机字符串比较结果:

在这里插入图片描述

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

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

相关文章

Elasticsearch:Elasticsearch percolate 查询

Elasticsearch 通常如何工作? 我们将文档索引到 Elasticsearch 中并对其运行查询以获得满足提供的搜索条件的文档。 我们构造一个匹配或术语查询作为输入,匹配查询的文档作为结果返回。 但这不是 percolate query 的情况..... 让我们看看这篇文章中的 p…

10.Java方法学习知识点大全

文章目录前言一、什么是方法1.什么是方法?2.实际开发中,什么时候用到方法?3.实际开发中,方法有什么好处?二、最简单的方法定义和调用1.方法的格式2.方法的调用3.看代码说结果4.为什么要有带参数的方法呢?三、带参数的方法定义和调用1.带参数的方法定义和调用2.形参和实参3.…

NuSphere PhpED Pro 19.5 Crack

PhpED是PHP(PHP IDE),HTML,CSS,XML,SMARTY,XHTML等的I ntegated Development Environment。 高级代码编辑器、可靠的 dbg 调试器、高效的数据库连接客户端以及快速安全的部署能力的平衡组合使 P…

90. 注意力分数及代码实现

1. 注意力分数 2. 拓展到高维度 3. Additive Attention ps: 这种的好处是,key,value,query的长度可以不一样 4. Scaled Dot-Product Attention n个query,m个key-value 对最后的结果是n x m的矩阵,第i行就表…

LeetCode[684]冗余连接

难度:中等题目:树可以看成是一个连通且 无环 的 无向 图。给定往一棵 n个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1到 n中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n的二维数组…

Python 压缩 css 文件,第三方模块推荐

本篇博客为大家详细介绍一下如何在 Python 中压缩 CSS 文件。 正式开始前,需要准备一个未压缩过的 CSS 文件。 Python 压缩 csscsscompressor 库使用在 Flask 中压缩 css 文件cssmin 库的用法rcssmin 库的用法总结csscompressor 库使用 在 Python 中可以使用多种方…

CSS之浮动以及清除浮动的几种方式

一. 什么是 CSS Float(浮动) CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。 Float(浮动),往往是用于图像,但它在布局时一样非常有…

【大数据管理】Java实现字典树TireTree

实现字典树,支持插入和删除,能够打印每一层的数据示例数据“SJ”, “SHJ”, “SGYY”,"HGL" ,将这些数据插入前缀树,打印树,修改SHZ为SHHZ 解题思路 Trie树即字典树,又称单词查找树或键树,是一…

Linux下进程控制详解

目录 一、进程创建 1.1 初识fork 1.2 函数返回值 1.3 写时拷贝技术 1.4 fork函数的使用场景 1.5 fork函数的失败原因 二、进程终止 2.1 进程退出场景 2.2 进程退出码 2.3 进程正常退出方法 2.3.1 exit函数 2.3.2 _exit函数 2.3.3 return方法 2.3.4 方法分析对比 …

【LINUX修行之路】——工具篇gcc/g++的使用和自动化构建工具make/makefile

学习范围:✔️LINUX ✔️ gcc/g✔️make/makefile作者 :蓝色学者 文章目录一、前言二、概念什么是gcc/g?什么是make/makefile?三、教程3.1gcc/g命令3.2make/makefile依赖关系依赖方法编写makefile文件四、资源一、前言 欢迎大家来…

谷粒学院——Day20【项目总结】

❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得关注、点赞、收藏、…

计算机组成原理实验-logisim实现自动售糖机

一.作业内容; 二.设计分析: 首先我们先确定输入和输出,根据题目的提示很明显可以看出因为每次可以投入10元或者5元硬币,当总钱数达到15元或者超过15元的时候,自动出糖,并且机器不找零,所以可以看出最大的钱…

基于 V2G 技术的电动汽车实时调度策略(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

第九层(2):STL之string类

文章目录前情回顾string类string类的本质string与char*的区别string类的特点string类的构造函数string类内的字符串追加函数string类内的字符串查找函数string类内的字符串替换函数string类内的字符串比较函数string类内的字符单个访问函数string类内的插入函数string类内的删除…

最小化最大值+拓扑排序要点+概率

今天嫖来的两道题: D.ScoreofaTreeD. Score of a TreeD.ScoreofaTree E.EdgeReverseE. Edge ReverseE.EdgeReverse DDD题是比较离谱的一道题,你在做的时候好像是dp,但是选择的情况太多了,其实对于每一个节点来说,除了叶…

fpga实操训练(fpga和cpu之间的配合)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 cpu和fpga之间,各有各的优势,cpu开发比较快捷,程序员比较好找;fpga对于基础运算效率高,但是找人不好找。实际产品的开发中,一般cpu负责需要接口定义和个性化定制的地方,而fp…

【Datewhale一起吃瓜 Task3】啃瓜第四章

文章目录决策树学习过程预测过程如何划分信息熵信息增益增益率基尼指数泛化能力关键:剪枝预剪枝后剪枝比较缺失值处理:样本赋权,权重划分决策树 决策树基于“树”结构进行决策 每个内部节点对应于某个属性上的测试每个分支对应于该属性的某个…

OpenGL ES着色器语言(GLSL ES)规范 ——下篇

文章目录前言分支和循环if、if-elseforcontinue、break、discard着色器内置变量函数函数定义规范声明webgl内置函数存储限定字constattributeuniformvarying精度限定字预处理指令总结前言 本篇接上文继续对着色器语言规范进行讲解,本文的内容包括:分支和…

Windows下JetBrains GoLand环境配置记录

闲来无事,go go go 这篇文章不是最简单的配置方法,相对简单的配置方法见文末引用。 本文记录了我遇见的一些问题以及解决方案与解释。 Go编译环境配置 首先得前往谷歌的网站下载go语言的镜像文件: Downloads - The Go Programming Languag…

1. 数据仓库维度建模简介

数据仓库的设计目的软件产品来源于用户的需求,因此,在深入数据仓库的设计之前,我们需要了解客户的痛点有哪些,整理如下:我们收集了海量的数据,但无法对其访问;我们需要以各种方式方便的对数据进…