当前位置 : 主页 > 编程语言 > java >

比较版本号的大小,前者大则返回一个正数,后者大返回一个负数,相等则返回0

来源:互联网 收集:自由互联 发布时间:2021-06-28
可用于版本是否强制更新时,判断版本号大小 /** * @author gaoyankang 比较版本号的大小,前者大则返回一个正数,后者大返回一个负数,相等则返回0 * @param version1 * version2 * @return int */private
可用于版本是否强制更新时,判断版本号大小
/**
	 * @author gaoyankang 比较版本号的大小,前者大则返回一个正数,后者大返回一个负数,相等则返回0
	 * @param version1
	 *            version2
	 * @return int
	 */
	private int compareVersion(String version1, String version2) throws Exception {
		if (version1 == null || version2 == null) {
			throw new Exception("compareVersion error:比较版本号参数错误");
		}
		String[] versionArray1 = version1.split("\\.");// 注意此处为正则匹配,不能用".";
		String[] versionArray2 = version2.split("\\.");
		int idx = 0;
		int minLength = Math.min(versionArray1.length, versionArray2.length);// 取最小长度值
		int diff = 0;
		while (idx < minLength && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0// 先比较长度
				&& (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {// 再比较字符
			++idx;
		}
		// 如果已经分出大小,则直接返回,如果未分出大小,则再比较位数,有子版本的为大;
		diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
		return diff;
	}
网友评论