激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - java 實現(xiàn)比較版本號功能

java 實現(xiàn)比較版本號功能

2020-05-25 12:05lqh JAVA教程

本篇文章主要介紹了java 中涉及到客戶端的系統(tǒng)經(jīng)常需要用到比較版本號的功能,并附小示例,希望能幫助需要的小伙伴

涉及到客戶端的系統(tǒng)中經(jīng)常需要用到比較版本號的功能,但是比較版本號又不能完全按照字符串比較的方式去用compareTo之類的方法;

這就需要我們總結(jié)版本號的通用規(guī)則,設(shè)計一個比較算法并封裝成通用方法來使用:

通常版本號如:1.3.20.8,6.82.20160101,8.5a/8.5c等;

通用規(guī)則就是,先將版本字符串按照點號分割,然后主版本與主版本比較、此版本與此版本比較,如此按序一級一級往后比較,直到有分出大小;

值得注意的是,很多比較版本號的方法都先將字符串轉(zhuǎn)換成int或者double類型,這樣做未必通用,因為可能含有字母,如8.5c這樣的版本號;

通用的方式依然是將分割后的字符串當做字符串來比較,不過,比較字符串之前,先比較位數(shù);

比較版本號的方法示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * 比較版本號的大小,前者大則返回一個正數(shù),后者大返回一個負數(shù),相等則返回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 < minLength
      && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0//先比較長度
      && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {//再比較字符
    ++idx;
  }
  //如果已經(jīng)分出大小,則直接返回,如果未分出大小,則再比較位數(shù),有子版本的為大;
  diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
  return diff;
}

注意:其中 split 方法入?yún)檎齽t匹配表達式,不能用"."("."在正則表達式里匹配任何值),需要用"\\.",才算是按點號分割;

這樣,先分割成子串數(shù)組,再挨個比較子版本號,比較子版本號時,先比較位數(shù),位數(shù)大的就大,位數(shù)一樣時再按字符串比較方式比較;

如果全部比較完(其中一個版本號比較完)之后,再看一下哪個版本號有更更多的子版本號,也就是分割后的數(shù)組長度,有子版本號的為大;

這樣就比較完善地考慮了各種情況,并比較出版本號大小;包括有字母后綴的也可以使用;

如 "9.9", "10.8.8.6" ,如果直接按字符串比較,則會前者大,后者小,而明顯是錯誤的;分割后比較第一個主版本9與10,從位數(shù)上,就已經(jīng)得出結(jié)果后者大;

再如 "9.9b", "9.8a" 等也適用,如果用轉(zhuǎn)換成int或者double的方法就不適用.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久国产精品电影 | 日本a级一区 | 亚洲九草| 999插插插| 亚洲成人午夜精品 | 久久久日韩精品一区二区三区 | 欧美黄色免费视频 | 国产成人精品区 | 一区在线免费视频 | 国产国语毛片 | 免费一级肉体全黄毛片 | 四季久久免费一区二区三区四区 | 精品一区二区三区免费视频 | 成人店女老板视频在线看 | 亚洲福利在线免费观看 | 369看片你懂的小视频在线观看 | 久久成人视屏 | 欧美在线a | 99精品视频免费看 | 欧美日韩精品一区二区三区蜜桃 | 蜜桃成品人免费视频 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 久久精品亚洲一区二区三区观看模式 | 亚洲小视频在线播放 | 亚洲精品无码不卡在线播放he | 久久黄色影院 | 黄色网址在线视频 | gogo全球大胆高清人露出91 | 亚洲资源在线 | 法国性经典xxxhd | 在线成人av观看 | 99久99| 日本成人在线播放 | 一边吃奶一边插下面 | 日韩视频一区二区三区四区 | 亚洲第一页视频 | 亚洲国产色婷婷 | 成人黄色短视频在线观看 | 成人在线视频免费播放 | 国产91影院| www.精品视频 |