package com.hzxc.chess.server.util;

/**
* Created by hdwang on 2018/3/19.
* 版本比较工具类
*/
public class VersionCompareUtil { /**
* 比较版本大小
*
* 说明:支n位基础版本号+1位子版本号
* 示例:1.0.2>1.0.1 , 1.0.1.1>1.0.1
*
* @param version1 版本1
* @param version2 版本2
* @return 0:相同 1:version1大于version2 -1:version1小于version2
*/
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0; //版本相同
}
String[] v1Array = version1.split("\\.");
String[] v2Array = version2.split("\\.");
int v1Len = v1Array.length;
int v2Len = v2Array.length;
int baseLen = 0; //基础版本号位数(取长度小的)
if(v1Len > v2Len){
baseLen = v2Len;
}else{
baseLen = v1Len;
} for(int i=0;i<baseLen;i++){ //基础版本号比较
if(v1Array[i].equals(v2Array[i])){ //同位版本号相同
continue; //比较下一位
}else{
return Integer.parseInt(v1Array[i])>Integer.parseInt(v2Array[i]) ? 1 : -1;
}
}
//基础版本相同,再比较子版本号
if(v1Len != v2Len){
return v1Len > v2Len ? 1:-1;
}else {
//基础版本相同,无子版本号
return 0;
}
} public static void main(String[] args) {
String v1 = "1.0.1";
String v2 = "1.0.2";
String v2_1 = "1.0.2.1";
String v2_2 = "1.0.2.2";
String v3 = "1.0.3"; System.out.println("v1>v1:"+compareVersion(v1,v1));
System.out.println("v1>v2:"+compareVersion(v1,v2));
System.out.println("v2>v1:"+compareVersion(v2,v1));
System.out.println("v2_1>v1:"+compareVersion(v2_1,v1));
System.out.println("v2_1>v2:"+compareVersion(v2_1,v2));
System.out.println("v2_2>v2_1:"+compareVersion(v2_2,v2_1));
System.out.println("v3>v2:"+compareVersion(v3,v2));
System.out.println("v3>v2_2:"+compareVersion(v3,v2_2)); }
}

java实现版本比较的更多相关文章

  1. java的版本区别、下载、配置

    参考:http://blog.csdn.net/liujun13579/article/details/7684604 java的版本区别 常用的 java 程序分为  Java SE.Java EE ...

  2. 解决linux下javac -version和java -version版本显示不一致

    解决linux下javac -version和java -version版本显示不一致 [javascript] view plaincopy [root@localhost usr]# $JAVA_ ...

  3. asdm不能登录问题;浏览器必须是ie,不能是chrome或者firefox;java的版本,尤其是安全等级和例外需要调整

    asdm不能登录问题:浏览器必须是ie,不能是chrome或者firefox;java的版本,尤其是安全等级和例外需要调整

  4. java-01 JAVA三大版本比较&JDK、JRE、JVM 的关系

    1. java三大版本比较 1.1 java SE javaSE 是java标准版的简称,其定位是个人计算机应用(应用原生界面比较ugly) 全称:Java Platform Standard Edi ...

  5. Atitit.ati dwr的原理and设计 attilax 总结 java php 版本

    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本 1. dwr的优点相对于ajax来说..1 2. DWR工作原理1 3. Dwr的架构2 4. 自定义dwr ...

  6. Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结

    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...

  7. 切換 java compiler 版本

    有些程式在執行時會顯示需要較新的 java jre 版本, 若系統裝有兩個 java jre 可以使用下列指令切協版本, sudo update-alternatives --config java ...

  8. java三大版本解析

    JAVA三大版本代表着JAVA技术的三个应用领域:JAVASE.JAVAME.JAVAEE. JAVA以前很长一段时间被称为JAVA2,所以现在很多人习惯称为J2SE.J2ME.J2EE,它们表示的含 ...

  9. Java各版本新特性总结

       Java或者说JDK的更新一般分为两部分内容:Java语言.JVM(C.C++编写),但通常情况下都不会单独发布,因为新的语言特性需要特定的JVM支持才行.下面我总结了从古至今Java各版本的新 ...

  10. Java各版本新增特性, Since Java 8

    Java各版本新增特性, Since Java 8 作者:Grey 原文地址: Github 语雀 博客园 Java 8 Reactor of Java 这一章来自于<Spring in Act ...

随机推荐

  1. 2017-2018-2 20155203《网络对抗技术》Exp2 后门原理与实践

    基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 通过下载带后门的程序或者点开带有后门的软件,或者后门本身就在我的系统里: (2)例举你知道的后门如何启动起来(win及linux) ...

  2. 定义C#鼠标指针的形状 Cursor

    原文:定义C#鼠标指针的形状 Cursor 定义C#指针形状的两种方法. 1.控件属性定义法: 在Windows应用程序中,通过设置控件的Cursor属性可以定义鼠标的显示形状.控件(如Button控 ...

  3. Python的进制等转换

    To 十进制 二进制: >>> int('110', 2) -> 6 八进制: >>> int('10', 8) -> 8 十六进制: >> ...

  4. JS设置状态栏

    JS设置状态栏可通过window.status = str来设置,在后台可通过 ClientScript.RegisterStartupScript( this.GetType(), "12 ...

  5. maven常用命令集

    maven常用命令 mvn compile  编译主程序源代码,不会编译test目录的源代码.第一次运行时,会下载相关的依赖包,可能会比较费时间. mvn test-compile  编译测试代码,c ...

  6. C# ConcurrentBag的实现原理

    目录 一.前言 二.ConcurrentBag类 三. ConcurrentBag线程安全实现原理 1. ConcurrentBag的私有字段 2. 用于数据存储的TrehadLocalList类 3 ...

  7. 巧用ios朗读kindle图书

    想必大家都有想过kindle出中文的有声阅读刊物吧? 今天突发奇想想到一招能够让我们听自己拿kindle买的中文图书.当然这是有条件的. 前提是你得有一个ios设备,不管是iphone还是ipad,i ...

  8. LeetCode 3Sum (Two pointers)

    题意 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...

  9. install opencv 2.4.10 with issue :"nvcc fatal : Unsupported gpu architecture 'compute_11'"

    issue: nvcc fatal   : Unsupported gpu architecture 'compute_11'CMake Error at cuda_compile_generated ...

  10. manjaro设置国内源

    升级系统到最新 sudo pacman -Syyu 配置源 kate /etc/pacman.conf 官方镜像源(包括 core, extra, community, multilib ) sudo ...