java - Java 中的 compareTo() 函数
问题描述
我已经写了下面的代码
import java.util.*;
class compare{
public static void main(String []args){
String s1="java";
String s2="javaProgramming";
System.out.println(s1.compareTo(s2));
}
}
此代码的输出为 -11。由于 java 中没有终止字符串的字符,“java”中的哪个字符与“javaProgramming”中的“P”进行比较?
解决方案
'P' 字符不与第一个中的任何内容进行比较String
。
它只比较两个字符串的前 4 个字符,它们彼此相等。
然后它返回第一个字符串的长度减去第二个字符串的长度。
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
由于第二个String
较长,并且第一个String
包含在第二个中,因此返回任何负值都可以,因为较短的String
应该按字典顺序排在第一位。
推荐阅读
- google-apps-script - 更改单元格选择时显示警报弹出窗口 (onSelectionChange)
- python - TypeError:迭代 0 维数组 Python(图像检测)
- php - 在 PHP 开发服务器 win 10 上更改 imagick 的权限或更改 tmp 目录
- grails - Grails 4.0.1 应用程序第一次加载页面在重启后需要一些时间
- ios - UIView 渐变作为多次应用的扩展
- python - python----错误的名字是'TypeError: not all arguments conversion during string formatting'(っ°Д°;)っ
- haskell - 无法在 Haskell IDE 的 Playground 中编写类型声明
- vue.js - 如何将引导程序添加到 Vue CLI 4 项目?
- laravel - 其他 Laravel 的选定值的下拉问题
- python - 如何修复“没有名为博客的模块”?