Android 应用版本号比较

1、compareTo() 方法

比较两个字符串的ASCII码的差值,如果两个字符串首字母不同,则该方法返回首字母的ASCII码的差值;如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值;如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值。

结果判断:返回为正数表示a>b, 返回为负数表示a<b, 返回为0表示a==b。

使用错误记录:"9".compareTo("10") 返回的值为8。并不是我们理解中的 9<10。

2、逐一比较每位数

比如说,2.3.9 与 2.3.10之间的比较,我们把这个字符串分别拆成3个数,2与2,3与3,9与10之间分别来作比较。

具体使用方法:

 /**
     * 比较 本地版本与互联网上最新版本
     *
     * @param bd  本地版本
     * @param flw 互联网版本
     * @return 小于0:需要更新  等于0:无需更新   大于0:无需更新
     */
    private int compareVersion(String bd, String flw) {
        String[] bdbb = bd.split("\\.", -1);
        String[] flwbb = flw.split("\\.", -1);
        int num = Math.min(bdbb.length, flwbb.length);//取出较小的一位数
        for (int i = 0; i < num; i++) {
            int a1 = "".equals(bdbb[i]) ? 0 : Integer.parseInt(bdbb[i]);
            int a2 = "".equals(flwbb[i]) ? 0 : Integer.parseInt(flwbb[i]);
            if (a1 != a2) {
                return a1 - a2;
            }
        }
        return bdbb.length - flwbb.length;
    }

猜你喜欢

转载自blog.csdn.net/minusn/article/details/127654693