web開發中,校驗這個工作是必不可少的。一般來說,界面中需要加上javascript校驗,但我們知道它并不可靠,很容易被繞過。那麼在伺服器端就需要加上背景校驗。請看下面這種很常見的代碼:
if(num>0 && num+1000<=2000){
System.out.println("這個數合法!");
}else{
System.out.println("這個數不合法!");
}
乍一看沒問題,就是普通的參數校驗,num值必須大于0,而且它加上1000必須小于2000。
如果令num=300,執行結果顯而易見是這樣的:
這個數合法!
結果沒有問題。
但如果令num=2147483647,輸出結果又是如何呢?答案是:
這個數合法!
num值本身顯然已經超過2000了,為什麼還會列印出“這個數合法”呢?
答案就是:num是int型的最大邊界值,num+1000已經超出了int的最大值,如果将它列印出來,可以看到num+1000是:-2147482649,當然是小于2000的
結論告訴我們,在java端參數校驗時,必須要校驗邊界值。其實在單元測試标準裡,三個值是必須測試的:0、正最大、負最小。如果這三個值都沒有問題,才可以測試其它邏輯。