### [Java工具-版本号比较](https://www.isearch.life/article/399) **Published:** 2026-03-02T08:58:14 **Author:** tearell **Excerpt:** 工具类代码 /** * 比较【数字+小数点】类型的版本号大小 * <pre> * 前者大,返回 1 * 后者大,返回 -1 * 相等,返回 0 * 不合法,返回 -2 * </pre> * * @param vers ## 工具类代码 ```java /** * 比较【数字+小数点】类型的版本号大小 *
* 前者大,返回 1 * 后者大,返回 -1 * 相等,返回 0 * 不合法,返回 -2 ** * @param version1 版本号1 * @param version2 版本号2 * @return int */ public static int compareAppVersion(String version1, String version2) { if (version1 == null || version2 == null) { throw new RuntimeException("版本号不能为空"); } version1 = version1.replaceAll("[^\\d.]", ""); version2 = version2.replaceAll("[^\\d.]", ""); int i = 0, j = 0; int n = version1.length(), m = version2.length(); while (i < n || j < m) { int a = 0; for (; i < n && version1.charAt(i) != '.'; i++) { a = a * 10 + version1.charAt(i) - '0'; } i++; int b = 0; for (; j < m && version2.charAt(j) != '.'; j++) { b = b * 10 + version2.charAt(j) - '0'; } j++; if (a != b) { return a > b ? 1 : -1; } } return 0; } } ``` ## 示例 ```java public static void main(String[] args) { System.out.println(compareAppVersion("123.21", "ab123.ab21ab")); System.out.println(compareAppVersion("123.223", "123.123")); System.out.println(compareAppVersion("123.223.223", "123.123.1")); System.out.println(compareAppVersion("123.223._223.223", "5.123.5")); System.out.println(compareAppVersion("5.123.5", "_123.223.223.223")); System.out.println(compareAppVersion("555", "123._223.223.223")); System.out.println(compareAppVersion("123.223.223.223", "555")); } ``` **Tags:** 知识, 软件开发 **Categories:** 精选 ---