Java String.compareTo(), 此方法如果这个字符串是等参数字符串那么​返回值0,如果这个字符串是按字典顺序小于字符串参数那么返回小于0的值,
如果此字符串是按字典顺序大于字符串参数那么一个大于0的值
描述

java.lang.String.compareTo() 方法比较两个字符串的字典。比较是基于字符串中的每个字符的Unicode值。此String对象表示的字符序列的参数字符串表示的字符序列进行比较字典.

之前比较客户端版本号,一直用的是String.compareTo,

它的比较方式是按照字符串的比较来执行的,所以它有不正确的地方。
举个例子,之前客户端版本号为:9.9.9,而服务器端最新的客户端版本号为:10.0.1,虽然10.0.1明显高于9.9.9,但是按照compareTo方法,这个9.9.9是大于10.0.1的,导致客户端版本号比较错误。
下面是分隔后的版本号转化为Integer值来比较. /**
*
* @Title: compareVersion
* @Description: 比较版本大小
* @param version1
* @param version2
* @return * @return: int
*/
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
int index = 0;
//获取最小长度值
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
//循环判断每位的大小
while (index < minLen && (diff = version1Array[index].length() - version2Array[index].length()) == 0 && (diff = version1Array[index].compareTo(version2Array[index]))==0) {
index++;
}
if (diff == 0) {
//如果位数不一致,比较多余位数
for (int i = index; i < version1Array.length; i++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}

  

最新文章

  1. SIMLock锁卡功能解析
  2. 【读书笔记《Bootstrap 实战》】3.优化站点资源、完成响应式图片、让传送带支持手势
  3. Castle ActiveRecord框架学习(一)
  4. MyBatis 入门
  5. Android程序ToDoList增加配置项页面
  6. PHP数据访问
  7. 【转】Xcode重构功能怎么用我全告诉你
  8. Java NIO------基础理论之缓存区
  9. php中数据库服务器连接类库文件的编写
  10. js获取浏览器版本
  11. 文本宽度的测量--measureText
  12. android 工具库
  13. SVN下载与安装
  14. 前端 CSS 目录
  15. Python_day8
  16. css点滴3—5种方式实现圆环
  17. 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y
  18. day73 中间件 以及模板引擎
  19. C# 根据Combobox控件来动态显示TabControl下的子元素
  20. 配置Linux下vim自动缩进等功能

热门文章

  1. Java多线程编程实战指南(核心篇)读书笔记(一)
  2. java作业调度框架Quartz
  3. EasyDSS流媒体服务器Linux emerg getpwnam("xxx") failed解决办法
  4. Oracle数据库中字段定义为Char类型,Hibernate用该字段进行动态绑定参数查询,获取不到结果的问题
  5. PPP of DDD
  6. iOS-----解决Prefix Header出错的问题
  7. iOS-----使用AVAudioPlayer播放音乐
  8. 【剑指offer】包含min函数的栈,C++实现
  9. 每天一个linux命令(磁盘):【转载】du 命令
  10. hadoop入门手册4:Hadoop【2.7.1】初级入门之命令:文件系统shell1