这篇文章给大家分享的是有关java之String类的compareTo方法怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
先放上源码
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; }
下面的是我自己写的山寨compareTo()方法, 经测试, 结果与compareTo(String otherString)返回一致
说明:
1. 为避免冲突, 我定义的方法名为compares
2. 注释中已经详细地记录了分析思路, 故对代码不做过多说明
public class StringDemo { @Test public void test() { // 因为o的ASCII码为: 111 // 因为a的ASCII码为: 97 // 所以差为 : 111 - 97 = 14 // 返回值为:14, 与compareTo返回结果一致 System.out.println(compares("hellojava", "hellajava")); } public static int compares(String firstString, String lastString) { /* * 算法思路分析: * 1. 获取2个字符串, 首先把2个字符串都转化为字符数组 (为后面一个一个字符进行比较做铺垫) * 2. 获取2个字符串的长度, 并把最短的字符串长度作为循环的次数 (这样可以避免数组越界的异常) * 3. 把2个字符串从0开始遍历, 比较每一个字符, 若字符不相等时, 则返回两个字符串的差值 * 4. 如果遍历的字符串都相等时, 则返回两个字符串的长度差 * * 方法结果: * 1. 若两个字符串长度和字符都相等时, 则返回0 * 2. 若两个字符长度不相等, 但大串完全包含(顺序和字符都相等)小串字符时, 则返回两个字符串的长度的差值 * 举例: * 大串: helloworlds * 小串: helloworld * 因为大串完全包含小串, 所以返回长度的差值, 为1 * 3. 若两个字符串长度和字符都不相等时, 则返回比较过程中, 某个索引位置上的字符之差 * 举例: * 串1: hellojavas * 串2: hellajava * 遍历比较后, 索引4的字符不同, 所以返回两个字符的差值14, 'o' - 'a' = 14 */ /* * 1. 获取2个字符串, 首先把2个字符串都转化为字符数组 (为后面一个一个字符进行比较做铺垫) */ char[] firstCh = firstString.toCharArray(); char[] lastCh = lastString.toCharArray(); /* * 2. 获取2个字符串的长度, 并把最短的字符串长度作为循环的次数 (这样可以避免数组越界的异常) */ int firstLength = firstCh.length; int lastLength = lastCh.length; int lim = Math.min(firstLength, lastLength); // 用k记录比较的索引 int k = 0; while(k < lim) { char c1 = firstCh[k]; char c2 = lastCh[k]; // 3. 把2个字符串从0开始遍历, 比较每一个字符, 若字符不相等时, 则返回两个字符串的差值 if(c1 != c2) { return c1 - c2; } // 如果字符相等, 则让索引加1 k++; } // 4. 如果遍历的字符串都相等时, 则返回两个字符串的长度差 return firstLength - lastLength; } }
感谢各位的阅读!关于“java之String类的compareTo方法怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。