public static int compareVersion(String version1, String version2) {
String[] s1 = version1.split("\\."); //通过\\将.进行转义
String[] s2 = version2.split("\\.");
int len1 = s1.length;
int len2 = s2.length;
int i, j;
for (i = 0, j = 0; i < len1 && j < len2; i++, j++) {
if (Integer.parseInt(s1[i]) > Integer.parseInt(s2[j])) {
return 1;
} else if (Integer.parseInt(s1[i]) < Integer.parseInt(s2[j])) {
return -1;
}
}
while (i < len1) {
if (Integer.parseInt(s1[i]) != 0) {
return 1;
}
i++;
}
while (j < len2) {
if (Integer.parseInt(s2[j]) != 0) {
return -1;
}
j++;
}
return 0;
}
核心思想是把字符串拆分成字符数组,然后转成int去挨个比较,最后的while循环是为了判断出差值位数,比如 1.2.3 和 1.2 比较第三位是否为0,如果为0的话,就继续比较第四位。如果不为0的话。就直接说明了,当前的版本号是大的或者是小的。