java实现判定新旧版本号

废话不多说,直接上代码

 1 /**
 2      * 判断是否为最新版本方法 将版本号根据.切分为int数组 比较
 3      *
 4      * @param localVersion  本地版本号
 5      * @param onlineVersion 线上版本号
 6      * @return 是否为新版本
 7      * @throws IllegalArgumentException argument may not be null !
 8      */
 9     public static boolean isNewVersion(String localVersion, String onlineVersion) {
10         if (localVersion == null || onlineVersion == null) {
11             throw new IllegalArgumentException("argument may not be null !");
12         }
13         if (localVersion.equals(onlineVersion)) {
14             return false;
15         }
16         //过滤非数字和非字符点
17         String[] localArray = localVersion.replaceAll("[^0-9.]", "").split("[.]");
18         String[] onlineArray = onlineVersion.replaceAll("[^0-9.]", "").split("[.]");
19         int length = localArray.length < onlineArray.length ? localArray.length : onlineArray.length;//取长度较短的版本
20         //以长度较短的版本为基点,逐个判断大小
21         for (int i = 0; i < length; i++) {
22             if (Integer.parseInt(onlineArray[i]) > Integer.parseInt(localArray[i])) {
23                 return true;
24             } else if (Integer.parseInt(onlineArray[i]) < Integer.parseInt(localArray[i])) {
25                 return false;
26             }
27             // 相等 比较下一组值
28         }
29         //长度较长的判断
30         //比较最后差异组数值
31         if (localArray.length < onlineArray.length) {//旧版本长度短于新版本
32             return Integer.parseInt(onlineArray[onlineArray.length - 1]) > 0;
33         } else if (localArray.length > onlineArray.length) {//旧版本长度长于新版本
34             return Integer.parseInt(onlineArray[onlineArray.length - 1]) < 0;//旧版本
35         }
36         return false;
37     }