按字典顺序比较两个字符串。该比较基于字符串中各个字符的
Unicode 值。将此
String
对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此
String
对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此
String
对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;
compareTo
只有在方法
equals(Object)
返回
true
时才返回
0
。
这是字典排序的定义。如果这两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引对二者均为有效索引,要么它们的长度不同,或者同时具备上述两种情况。如果它们在一个或多个索引位置上具有不同的字符,假设 k 是这类索引的最小值;则按照 < 运算符确定的那个字符串在位置 k 上具有较小的值,其字典顺序在其他字符串之前。这种情况下,compareTo
返回这两个字符串在位置 k
处的两个不同的 char 值,即值:
this.charAt(k)-anotherString.charAt(k)
如果它们没有不同的索引位置,则较短字符串在字典顺序上位于较长字符串的前面。这种情况下,
compareTo
返回这两个字符串长度的不同,即值:
this.length()-anotherString.length()
public class TestStringCompare {
public static void main(String args[])
{
String s1="abc";
String s2="abcd";
System.out.println("s1.compareTo(s2)"+s1.compareTo(s2));//前缀相同则比较长度,长度差-1
System.out.println("s1.compareTo(s2)"+s1.compareTo("abcdefgh"));//长度差-5
String s3="abc";
String s4="ae";
System.out.println("s3.compareTo(s4)"+s3.compareTo(s4));//只比较第一个不同的字符处b-e=-3
String s5="abcdeg";
String s6="acce";
System.out.println("s5.compareTo(s6)"+s5.compareTo(s6));//b-c=-1
String s7="abc";
String s8="abb";
System.out.println("s7.compareTo(s8)"+s7.compareTo(s8));//c-b=1
String s9="abc";
String s0="abaaaaaaaaaaaaa";
System.out.println("s9.compareTo(s0)"+s9.compareTo(s0));//c-a=2只比较第一个不同的字符处,与长度无关
String sa="我";
System.out.println("s9.compareTo(s0)"+s9.compareTo("喔"));//-2181因为是Unicode编码可以比较汉字
}
}
相关推荐
#### 四、基于字典序的比较 有时候我们需要按照字典顺序对字符串进行排序或比较。这时可以使用`compareTo()`方法。该方法返回一个整数值: - 如果`this`字符串等于另一个字符串,则返回0; - 如果`this`字符串按...
compareTo()方法返回一个整数值,表示该字符串在字典序中的位置。 在上面的代码中,使用compareTo()方法来判断s4和s5的大小。 4. lastIndexOf()方法:用于获取字符串中最后出现的指定字符或子串的位置。 在上面的...
+ public int compareTo(String s):按字典序与参数s指定的字符串比较大小 + public int compareToIgnoreCase(String s):忽略大小写比较字符串 + public boolean contains(String s):判断当前字符串对象是否...
// 字母按字典序 } else if (isAlpha1 || isAlpha2) { return isAlpha1 ? -1 : 1; // 字母在前,非字母在后 } else { // 汉字按拼音排序 if (pinyin1 == null || pinyin2 == null) { return o1.compareTo(o2)...
- `compareTo()`方法比较两个字符串的字典序大小。 3. **字符串连接**:使用`+`操作符连接字符串实际上会创建一个新的字符串对象,因为字符串是不可变的。 4. **字符串实例化**: - 直接赋值形式:字符串被存放...
字符串的比较方法包括`equals()`用于判断字符串是否相等,`equalsIgnoreCase()`忽略大小写比较,`startsWith()`和`endsWith()`检查字符串是否以特定子串开始或结束,以及`compareTo()`和`compareToIgnoreCase()`进行...
实验1 String类的常用方法 19 实验2 比较日期的大小 21 实验3 处理大整数 22 上机实践6 组件及事件处理 23 实验1 算术测试 23 实验2 信号灯 25 实验3 布局与日历 28 上机实践7 组件及事件处理2 31 实验1 方程求根 31...
对于成绩相同的学生,还需要根据他们的名字进行字典序排序。 #### 输入描述 - 第一行:输入两个整数`n`和`m`,分别表示学生人数和科目数量。 - `0 - `0 - 第二行:输入`m`个科目名称,用空格隔开。 - 科目名称...
Comparable接口定义了一个`compareTo()`方法,该方法比较两个对象的大小并返回一个整数值。例如,如果键是String类型,那么默认的compareTo()方法会按照字典顺序比较字符串。 ```java public class MyKey ...
g.drawString("字符串s1的长度为:"+n1,5,70); g.drawString("字符串s2的前缀是否为we? "+s2.startsWith("we"),5,90); ... g.drawString("s3按字典序重新排序为: ",5,130); for(int i=0;i;i++)
// 输出负数,因为"apple"在字典序上小于"banana" ``` 5. 使用`compareToIgnoreCase()`方法: 类似于`equalsIgnoreCase()`,`compareToIgnoreCase()`方法也忽略大小写进行比较,返回值遵循`compareTo()`的规则。...
(2)判断`s2`是否按字典序大于`s3`,使用`compareTo()`方法:`if (s2.compareTo(s3) > 0)`。 (3)获取`path`中最后一个目录分隔符的位置,使用`lastIndexOf("\\")`:`position = path.lastIndexOf("\\")`。 (4)...
在C++中,`std::strcmp`是C++标准库中的成员,而在Java和Python等高级语言中,有相应的字符串对象的比较方法,如Java的`String.equals()`或`compareTo()`,Python的`==`运算符或`str1 等。 理解并正确使用`strcmp...
8. **滑动窗口**:在给定长度的窗口内处理字符串,常用于查找子串出现的最大次数、最小字典序等问题。 9. **双指针技术**:通过两个指针从字符串两端向中间移动,解决诸如检查回文、查找子串等问题。 10. **排序与...