百度指数不高的网站怎么优化,网站图片类型,软件开发文档编写规范,附近广告公司涉及到客户端的系统中经常需要用到比较版本号的功能#xff0c;但是比较版本号又不能完全按照字符串比较的方式去用compareTo之类的方法#xff1b;这就需要我们总结版本号的通用规则#xff0c;设计一个比较算法并封装成通用方法来使用#xff1a;通常版本号如#xff1a…涉及到客户端的系统中经常需要用到比较版本号的功能但是比较版本号又不能完全按照字符串比较的方式去用compareTo之类的方法这就需要我们总结版本号的通用规则设计一个比较算法并封装成通用方法来使用通常版本号如1.3.20.86.82.201601018.5a/8.5c等通用规则就是先将版本字符串按照点号分割然后主版本与主版本比较、此版本与此版本比较如此按序一级一级往后比较直到有分出大小值得注意的是很多比较版本号的方法都先将字符串转换成int或者double类型这样做未必通用因为可能含有字母如8.5c这样的版本号通用的方式依然是将分割后的字符串当做字符串来比较不过比较字符串之前先比较位数比较版本号的方法示例/*** 比较版本号的大小,前者大则返回一个正数,后者大返回一个负数,相等则返回0* param version1* param version2* return*/public static int compareVersion(String version1, String version2) throws Exception {if (version1 null || version2 null) {throw new Exception(compareVersion error:illegal params.);}String[] versionArray1 version1.split(\\.);//注意此处为正则匹配不能用.String[] versionArray2 version2.split(\\.);int idx 0;int minLength Math.min(versionArray1.length, versionArray2.length);//取最小长度值int diff 0;while (idx (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;}注意其中 split 方法入参为正则匹配表达式不能用.(.在正则表达式里匹配任何值)需要用\\.才算是按点号分割这样先分割成子串数组再挨个比较子版本号比较子版本号时先比较位数位数大的就大位数一样时再按字符串比较方式比较如果全部比较完(其中一个版本号比较完)之后再看一下哪个版本号有更更多的子版本号也就是分割后的数组长度有子版本号的为大这样就比较完善地考虑了各种情况并比较出版本号大小包括有字母后缀的也可以使用如 9.9, 10.8.8.6 如果直接按字符串比较则会前者大后者小而明显是错误的分割后比较第一个主版本9与10从位数上就已经得出结果后者大再如 9.9b, 9.8a 等也适用如果用转换成int或者double的方法就不适用欢迎指正http://blog.csdn.net/sowhat_ah/article/details/43955337