java字符串⽐⼤⼩_Java字符串⽐较(3种⽅法)
字符串⽐较是常见的操作,包括⽐较相等、⽐较⼤⼩、⽐较前缀和后缀串等。在 Java 中,⽐较字符串的常⽤⽅法有 3 个:equals() ⽅法、equalsIgnoreCase() ⽅法、 compareTo() ⽅法。下⾯详细介绍这 3 个⽅法的使⽤。
equals() ⽅法
equals() ⽅法将逐个地⽐较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,它返回 true,否则返回 false。对于字符的⼤⼩写,也在检查的范围之内。equals() ⽅法的语法格式如下:
str1.equals(str2);
str1 和 str2 可以是字符串变量, 也可以是字符串字⾯量。 例如, 下列表达式是合法的:
"Hello".equals(greeting)
下⾯的代码说明了 equals() ⽅法的使⽤:
Stringstr1="abc";
Stringstr2=newString("abc");
Stringstr3="ABC";
System.out.println(str1.equals(str2));// 输出 true
System.out.println(str1.equals(str3));// 输出 false
equalsIgnoreCase() ⽅法
equalsIgnoreCase() ⽅法的作⽤和语法与 equals() ⽅法完全相同,唯⼀不同的是 equalsIgnoreCase() ⽐较时不区分⼤⼩写。当⽐较两个字符串时,它会认为 A-Z 和 a-z 是⼀样的。
下⾯的代码说明了 equalsIgnoreCase() 的使⽤:
Stringstr1="abc";
Stringstr2="ABC";
System.out.println(str1.equalsIgnoreCase(str2));// 输出 true
equals()与==的⽐较
理解 equals() ⽅法和==运算符执⾏的是两个不同的操作是重要的。如同刚才解释的那样,equals() ⽅法⽐较字符串对象中的字符。⽽==运算符⽐较两个对象引⽤看它们是否引⽤相同的实例。
下⾯的程序说明了两个不同的字符串(String)对象是如何能够包含相同字符的,但同时这些对象引⽤是不相等的:
Strings1="Hello";
Strings2=newString(s1);
System.out.println(s1.equals(s2));// 输出true
System.out.println(s1==s2);// 输出false
变量 s1 指向由“Hello”创建的字符串实例。s2 所指的的对象是以 s1 作为初始化⽽创建的。因此这两个字符串对象的内容是⼀样的。但它们是不同的对象,这就意味着 s1 和 s2 没有指向同⼀的对象,因此它们是不==的。
因此,千万不要使⽤==运算符测试字符串的相等性,以免在程序中出现糟糕的 bug。从表⾯上看,这种 bug 很像随机产⽣的间歇性错误。
对于习惯使⽤ C++ 的 String 类的⼈来说,在进⾏相等性检测的时候⼀定要特别⼩⼼。C++ 的 String 类重载了==运算符以便检测字符串内容的相等性。可惜 Java 没有采⽤这种⽅式,它的字符串“看起来、感觉起来”与数值⼀样,但进⾏相等性测试时,其操作⽅式⼜类似于指针。语⾔的设计者本应该像对 C++ 那样也进⾏特殊处理, 即重定义==运算符。
当然,每⼀种语⾔都会存在⼀些不太⼀致的地⽅。C 程序员从不使⽤==对字符串进⾏⽐较,⽽使⽤ strcmp 函数。Java 的 compareTo ⽅法与 strcmp 完全类似。所以下⾯我们来介绍 Java 的 compareTo ⽅法。
compareTo() ⽅法
通常,仅仅知道两个字符串是否相同是不够的。对于排序应⽤来说,必须知道⼀个字符串是⼤于、等于还是⼩于另⼀个。⼀个字符串⼩于另⼀个指的是它在字典中先出现。⽽⼀个字符串⼤于另⼀个指的是它在字典中后出现。字符串(String)的 compareTo() ⽅法实现了这种功能。
compareTo() ⽅法⽤于按字典顺序⽐较两个字符串的⼤⼩,该⽐较是基于字符串各个字符的 Unicode 值。compareTo() ⽅法的语法格式如下:
strpareTo(Stringotherstr);
字符串比较函数实现它会按字典顺序将 str 表⽰的字符序列与 otherstr 参数表⽰的字符序列进⾏⽐较。如果按字典顺序 str 位于 otherster 参数之前,⽐较结果为⼀个负整数;如果 str 位于 otherstr 之后,⽐较结果为⼀个正整数;如果两个字符串相等,则结果为 0。
提⽰:如果两个字符串调⽤ equals() ⽅法返回 true,那么调⽤ compareTo() ⽅法会返回 0。
编写⼀个简单的 Java 程序,演⽰ compareTo() ⽅法⽐较字符串的⽤法,以及返回值的区别。代码如下:
publicstaticvoidmain(String[]args){
Stringstr="A";
Stringstr1="a";
System.out.println("str="+str);
System.out.println("str1="+str1);
System.out.println("strpareTo(str1)的结果是:"+strpareTo(str1));
System.out.println("str1pareTo(str)的结果是:"+str1pareTo(str));
System.out.println("str1pareTo('a')的结果是:"+str1pareTo("a"));
}
上述代码定义了两个字符串“A”和“a”,然后调⽤ compareTo() ⽅法进⾏相互⽐较。最后⼀⾏代码拿“a”与“a”进⾏⽐较,由于两个字符串相同⽐较结果为 0。运⾏后的输出结果如下:
str=A
str1=a
strpareTo(str1)的结果是:-32
str1pareTo(str)的结果是:32
str1pareTo('a')的结果是:0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论