Java字符串比较:深入理解compareTo()、==和equals()的区别与用法

创始人
2024-12-14 21:26:38
0 次浏览
0 评论

怎么比较两个字符串的大小

比较两个字符串的大小:

1.可以使用CompareTo()方法,还有忽略大小写的CompareToIgnoreCase(String)和int类型的CompareTo(ObjectString)方法,以CompareTo()方法为例:

1。
如果字符串相等,则返回值为0,如果不相等,则返回其他值。

比较方法首先涉及从第一个字母开始比较相关字符的大小(Escal顺序)。

2.如果第一个字符不等于参数的第一个字符,则结束比较并返回它们之间的差值(ascii代码值)(负值之前)字符串的值小于后面的字符串,并且为正值。
前面的字符串大于后面的字符串)

3.如果第一个字符等于参数的第一个字符,则将第二个字符与参数的第二个字符进行比较,依此类推,直到被比较的字符或要比较的字符中的一个字符被比较。

例如:对于:

Strings1='abc';

Strings2='abcd';

Strings3='abcdfg';

字符串s4='1bcdfg';

Strings5='cdfg';

System.out.println(s1.compareTo(s2));//-1(等于第一个,s1长度从1较小

System.out.println(s1.compareTo(s3));//-3(前面等于,s1的长度小于3)

System.out.println(s1.compareTo(s4));//48('a'的ASCII码是97,'1'的ASCII码是49,所以返回48)

System.out.println(s1.commpareTo(s5));//-2('a'的ASCII码是97,'c'的ASCII码是99,所以返回-2)

2使用“==”,.equals()方法确定大小:

1。
“==”是判断相等的运算符,如果双方都是原生数据类型,则判断值;如果双方都是复合数据类型(类类型),则判断地址;相同,内容应该相同,但如果不同,内容也可能不一样。

2..equals()方法只能判断复合数据类型,因为它继承了Object类,它默认判断的是两边的内存地址”,但是类中已经重写了一些其他类比如String、Integer等类都有自己的实现,比较内容不知道。
对于:

Stringstr1=newString('hello');

Stringstr2='hello';

System.out("str1==str2:"+(str1==str2));\false

systemm.out.println("str1.equals(str2):"+str1.equals(str2));\true

当使用(==)进行比较时与内存中的存储地址进行比较,因此除非是同一个新对象,否则比较结果为true,否则比较结果为false被重写为字符串,并且计算的是内容,而不是地址。

但是字符串比较特殊,因为我们都知道JVM把内存分为三个区域,即方法区、堆区和栈区。
方法区中维护着一个字符串常量池。
池用于存储运行时生成的各种字符串,池中的内容不重复。
但普通对象不在这个池中,对象被放在堆中。
为此有必要分析一下字符串的构造方法:

1.当使用任何方法创建字符串对象str='X'时,Java运行时(运行JVM)会将其保留在池中创建字符串,否则不要将其添加到池中。

2.在Java中,只要使用new关键字创建一个对象,就一定会创建一个新的对象(在堆或栈区域)。

3.如果使用直接规范创建字符串对象或者使用纯字符串串联,只会检查并维护字符串池中的字符串,如果池中没有字符串,则创建一个池,如果有,就这样。
!但字符串对象永远不会在堆栈区域中创建。

4.使用包含变量的表达式创建字符串对象,不仅会检查和维护字符串池,还会在堆栈区创建字符串对象。

例如:

Stringstr2='Hello';

Stringstr3='Hello';

System.out.println(''str3==str2:"+(str3==str2));\true

system.out.println("str3.equals(str2):"+str3.equals(str2));\正确

扩展信息:

字符串用法。

1.StringStrs

生成空字符串

2.String(str)

复制字符串str

>

3.strings(str,stridx)

将从str开始的字符串str转换为初始值的一部分

5.strings(cstr)

作为字符串s的初始值使用c_string类型cstr

6.strings(cstr,char_len)

使用c_string类型cstr的前char_len个字符作为字符串s的初始值。

7.strings(num,c)

创建一个包含c个字符的字符串

8.strings(strs,beg,end)

使用区间[beg,end]中的字符作为字符串s的初始值。
执行

示例

#include

#include

usingnamespacestd;

intmain()

{

stringstr('12345678');

charch[]='abcdefgh';

stringa;//定义一个空字符串

stringstr_1(str);//全部copy

stringstr_2(str,2,5);//从字符串str的第二个元素开始,复制5个元素到str_2

stringstr_3(ch,5);//赋值将字符串ch的前5个元素转换为str_3

stringstr_4(5,'分配以在end()上指定5个'X'组合do);//将str所有元素复制到str_5中

cout<

cout<

cout<

cout<

cout<

cout<

cout<<;str_5<

return0;

}

请问C++中两个字符串的大小是怎样比较的?

C++中两个字符串大小比较方法如下:

1.首先定义一个整型变量j来保存决策结果。

2.接下来定义两个字符串变量来保存判断后的字符串。

3.输入两个字符串并将它们保存在变量s1和s2中。

4.比较字符串s1和s2的大小并将它们存储在变量j中。

5.根据判决结果j的值,输出两个字符串的比较结果。

6.使用比较函数比较两个字符串。
当s1大于s2时,返回值大于0。
当s1等于s2时返回值。
等于0。
当s1小于s2时,返回值小于0。

热门文章
1
C语言字符串常量解析:区别、用途及存储方... 什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...

2
C语言printf函数:格式字符串与输出... printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...

3
Excel技巧:计算字符串起始位置与合并... 如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...

4
Python发音全解:掌握正确的发音方法... python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...

5
字符与字符串:编程中的基础文本类型解析 字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...

6
Python编程语言:多领域应用与开发优... Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...

7
深度解析:C语言编程特点与应用领域 什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...

8
Java全解析:跨平台编程语言的魅力与多... java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...

9
Python编程语言:特点、应用与优势解... python是什么?Python是一种跨平台计算机编程语言。它是一种集解释、编译...

10
C语言入门必备:100个核心代码实例解析 C语言必背100代码,C语言必会100代码大全对于C语言初学者来说,掌握基本关键...