编写高质量代码:改善Java的151个建议四(基本类型)21-30
該書籍PDF下載地址:http://download.csdn.net/download/muyeju/10001473
基本類型有8個:byte,short,int,char,long,double,float,boolean
21.用偶判斷,不用奇判斷
當判斷一個數(shù)是偶數(shù)還是奇數(shù)的時候,應(yīng)該判斷是否是偶數(shù)。
i%2==0?"偶數(shù)":"奇數(shù)"
取余的原理:
被除數(shù)-被除數(shù)/除數(shù)*除數(shù)
22.貨幣的值
貨幣的值一般都是2為小數(shù),如果用浮點類型的話,計算機計算出來的結(jié)果可能是不準確的,它只能無限接近某個值,而不能完全精確,這是由浮點數(shù)的存儲規(guī)則決定的。就像十進制里面三分之一不能準確表示,二進制里面五分之一也不能準確表示。
例:10-9.6=0.40000000000000036
解決方法:
1.使用BigDecimal處理
2.使用整形,只要展示時縮小100倍就可以了,及是以分為單位
23.基本類型轉(zhuǎn)換時,使用主動聲明方式減少不必要的Bug
Java是先運算,然后進行類型轉(zhuǎn)換。超過了int的最大值時,其值就是負,因為過界了就會從頭開始
24.基本類型的邊界
? ? 對基本類型進行判斷的時候,應(yīng)該注意其邊界值,一旦超過邊界值,就會使校驗條件失效。所以應(yīng)避免輸入或傳入的值就行計算,直接用輸入或傳入的值進行判斷
例如:
package deep;import java.util.Scanner;public class Client {// 一個會員擁有產(chǎn)品的最多數(shù)量public static final int LIMIT = 2000;public static void main(String[] args) {// 會員當前擁有的產(chǎn)品數(shù)量int cur = 1000;Scanner input = new Scanner(System.in);System.out.println("請輸入需要預(yù)定的數(shù)量:");while (input.hasNextInt()) {int order = input.nextInt();// 當前擁有的與準備訂購的產(chǎn)品數(shù)量之和if (order > 0 && order + cur <= LIMIT) {System.out.println("你已成功預(yù)定了" + order + "個產(chǎn)品!");} else {System.out.println("超過限額,預(yù)訂失敗!");}}} }當輸入的值是2147483647 這個的時候,會發(fā)現(xiàn)也預(yù)定成功,這個因為數(shù)字越界,使檢驗條件失效
修改:(order > 0 && order <= LIMIT - cur)成這樣就行了,應(yīng)該避免輸入(傳入)的參數(shù)進行計算
25.根據(jù)不同的場景,選擇不同的舍入模式
?RoundingMode的幾種舍入模式:
? ? ?1.RoundingMode.CEILING:向正無窮方向舍入
?2.RoundingMode.FLOOR:像負無窮方向舍入
?3.RoundingMode.UP:像絕對值最大的方向舍入,舍棄非零即進位
?4.RoundingMode.DOWN:像絕對值最小的方向舍入,所有位都舍棄,不存在進位的情況
?5.RoundingMode.HALF_UP:最近數(shù)字舍入(5舍)
?6.RoundingMode.HALF_DOWN:最近數(shù)字舍入(5舍)
?7.RoundingMode.HALF_EVEN:銀行家算法(4舍6入5考慮,5后非0就進1,5后為0看奇偶,5前為偶應(yīng)舍去,5前為奇要進一)
26.包裝類型參與計算時,要做null值校驗
例:
27.包裝類型的大小比較
包裝類的比較不能用==,因為包裝類是對象,用==比較的是對象的引用,即地址是否相等。(如果是基本類型,==比較的是它們的值是否相等)
用compareTo()方法比較,相等返回0,大于返回1,小于返回-1
例:
public static void main(String[] args) {Integer i = new Integer(300) ;Integer j = new Integer(-600) ;int k = j.compareTo(i) ;System.out.println(k);//結(jié)果:-1}
28.優(yōu)先使用整型池
整型池:在IntegerCache類中,存在一個cache靜態(tài)數(shù)組,容納的是-127到128之間的Integer對象。通過valueOf產(chǎn)生包裝對象時,如果int在-128到127之間,則之間從整型池中獲得對象,不在該范圍類的int類型則通過new生成包裝對象。
整型池的存在提高了系統(tǒng)性能,節(jié)約了內(nèi)存空間
通過包裝類的valueOf生成包裝實例顯著提高空間和時間性能
29.基本類型優(yōu)先使用
因為有包裝類時,可能會進行一些拆箱裝箱的過程,從而導(dǎo)致出現(xiàn)一些想不到的問題
30.不要隨便設(shè)置隨機種子
隨機數(shù)和種子之間的關(guān)系:
種子不同,產(chǎn)生不同的隨機數(shù)
種子相同,即使實例不同,也產(chǎn)生相同的隨機數(shù)
例:
public static void main(String[] args) {Random r = new Random(1000) ;for(int i=1;i<4;i++){System.out.println("--------"+r.nextInt());} }結(jié)果始終是:
---------1244746321
--------1060493871
---------1826063944
所以,若非必要,不要設(shè)置隨機數(shù)種子
轉(zhuǎn)載于:https://www.cnblogs.com/-scl/p/7641562.html
總結(jié)
以上是生活随笔為你收集整理的编写高质量代码:改善Java的151个建议四(基本类型)21-30的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OneNote 安装代码高亮插件 Not
- 下一篇: 《Java多线程编程核心技术》读后感(十