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

一·背景:

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)“你好22200000”跟“你好222”比较,前5位单个字符肯定相等,都取第6位单个字符时,明显第二个字符串没有第6位字符了;这种情况下计算机会直接使用,第一个字符串的长度减去第二个字符串长度,给出结果!

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

在这里插入图片描述

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

(1)使用计算机字符串比较结果:字符串“你好22200000”比字符串“你好222”大,如下图所示

在这里插入图片描述

(2)使用计算机字符串比较结果:字符串“你8888699”比字符串“你8888”大

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、StringStringBuffer的区别 JAVA平台提供了两个类:StringStringBuffer,它们可以储存和操作字符串,即包含多个字符字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程可能出现的非正常状态,运行时异常表示虚拟机的通常操作可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bea
### 回答1: 字符串格式的图像是指将一张图像转换成一组字符和符号来描述图像的过程。这种方法在计算机图形学和信息处理得到了广泛应用。通过使用ASCII码或Unicode码的特定字符和符号,将图像的不同区域用相应的字符填充,再根据字符的数量和位置确定每个区域的灰度值,从而实现图像的转换。 字符串格式的图像具有易于理解和处理的优点,可以在不使用任何专业软件的情况下进行编辑和修改,且占用的空间相对较小。它广泛应用于字符动画、命令行界面、签名档、代码注释等方面。此外,在网络传输字符串格式的图像也具有一定的优势,可以节省带宽。 不过,字符串格式的图像也存在一些问题,比如由于字符数量有限,无法准确表达图像的每个细节,导致图像的清晰度和精度受到一定的限制。同时,在处理复杂图像时,字符之间的排列和间距也需要进行优化,否则可能会产生视觉上的错位和模糊。 综上所述,字符串格式的图像虽然存在一些局限性,但仍有广泛应用的前途。随着技术的不断发展,未来其应用领域也将不断扩展。 ### 回答2: 字符串格式的图像,在计算机领域指的是使用特定的字符来组成图像的一种方式。这种图像通常是基于文本的,使用字母、数字、符号等字符来表示图像的各种特征,而不是使用彩色或灰度像素。 字符串格式的图像在计算机编程、数据处理、图像处理领域应用广泛。例如,在文本编辑器字符画来展示图案,或者用ASCII码字符来表示简单、小时字体的文本。 此外,在数字图像处理字符串格式的图像也有一定的应用价值。可以用各种符号来代表像素的灰度值,通过字符的密度和排列方式来表示图像的各种细节和特征。这种方式可以减小图像文件的大小,便于传输和存储。 然而,由于字符串格式的图像分辨率低、色彩单一,因此其表现效果非常有限,无法满足高清晰、高保真的图像需求。 综上所述,字符串格式的图像虽然具有一定的应用价值,但其局限性也是显而易见的。在应用时需要根据实际需求进行选择。 ### 回答3: 字符串格式的图像是指用字符串来表示图像的一种编码方式。它是一种图像压缩技术,将图像的每个像素转化成字符的一个字符,从而将图像压缩至原来尺寸的几十分之一。 这种编码方式主要是用于文字信息传输和图像存储,可以节省带宽和存储空间。字符串格式的图像具有传输速度快、占用存储空间少等特点,在移动互联网时代得到了广泛应用。 对于使用字符串格式表示的图像,其还原成图像就是将字符字符按照规则转化成像素点的颜色值,在屏幕上进行呈现。这一过程需要借助于算法和程序进行处理,目前使用较广泛的算法是基于哈夫曼编码的算法。 字符串格式的图像虽然可以实现压缩,但其图像质量相对较低,细节不够清晰,容易出现模糊和失真的情况。因此,在某些对图像质量要求较高的领域,如医疗图像、卫星图像等,其应用还较为有限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ideal-cs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值