java之String类的compareTo方法怎么用

这篇文章给大家分享的是有关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方法怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


本文标题:java之String类的compareTo方法怎么用
URL标题:http://myzitong.com/article/gchcho.html