前言 & java中精度損失問題 & +=語句強制轉換性,前言怎麼寫

來源:互聯網
上載者:User

前言 & java中精度損失問題 & +=語句強制轉換性,前言怎麼寫

1、初入園,初寫博

  大約一個月前,我獲得了在海南電信規劃設計院實習的機會,作為通訊學子,能進設計院實習實屬一個很好的機會,可是在我進入設計院實習兩周左右的時間之後,我發現了設計院的工作基本上就是簡單枯燥的機械工作。實習期間無非就是拿著前輩的規劃設計圖做出相應的設計規劃書,設計規劃書有個現成的模板,我們實習的工作就是根據設計圖把模板進行相應的修改,修改完成之後則算完成了一份設計規劃書。工作性質簡單乏味不只是實習如此,我還對我在通訊行業的規劃有了相應的展望,實習結束之後,即使我成為了一個優秀的電信規劃設計師,這樣也不過只是依照電信規劃原則而進行裝置擺放的一個規劃設計師。在我看來整個通訊行業基本沒有什麼創新可言(參與通訊領域新技術的研發除外),沒有創新亦沒有挑戰,簡單無聊的機械工作實在是不適合年輕人,所以我選擇了辭職,放棄了穩定的國企工作,放棄了這樣一個混吃等死的工作。

  在辭職之後,我想開始自己的程式員生涯,畢竟我個人對於編程還是很有好感的,在我看來這是一個充滿挑戰的職業。上周,我接到一個中通服旗下的軟體公司的電話面試,面試之後我知道自己作為非軟體工程專業的學子在軟體開發方面還是存在很多不足,於是我重新開始了軟體開發的基礎學習,另外,我也在昨天申請了部落格,在此記錄下我當下的學習感悟以及日後參加工作遇到的問題及處理辦法。

 

2、java中資料類型精度損失問題

  在網上找了畢向東老師的java教學視頻開始了自學之路,在前兩天的自學過程中有兩點內容我認為應該著重注意下,寫在此處,給未來的我和路過的朋友一點小小的協助。

  關於java中資料類型範圍值溢出報錯:

 1 class  Demo2 2 { 3     public static void main(String[] args)  4     { 5         byte a,b,c; 6         /*將int型賦值給byte型,byte型長度為一個位元組,數值範圍-128~127*/ 7         a=5; 8         b=128;//將超出資料類型數值範圍的數賦給該類型會報錯 9         c=a+b;//將未知大小的數值賦給byte型會報錯10         System.out.println(c);11 12         int x,y,z;13         /*int型是java預設的整數類型,其長度為四個位元組,數值範圍-2147483648~2147483647*/14         x=154;15         y=Integer.MAX_VALUE+1;//給y賦值int最大值加1超出範圍,溢出但是不報錯16         z=x+y;//將未知大小的數值賦給int型不會報錯17         System.out.println(z);18     }19 }

  運行結果:

  int型不報錯,運行結果為-2147483494(錯誤結果)

  程式碼分析:

  byte型:1)在給其賦值超出範圍的數值會報錯精度損失(資料溢出)

      2)用未知大小的數(即變數)給其賦值時會報錯精度損失(資料溢出)

  int型: 1)在給其賦值超出範圍的數值不會報錯精度損失(資料溢出)

       2)用未知大小的數(即變數)給其賦值時不會報錯精度損失(資料溢出)

  總結:

  在編程中,不同類型的資料在賦值的時候可以使用強制轉換來實現賦值,但是其中可能會出現精度損失,此類問題引起的bug不易發現,編程時需注意,尤其是int型資料,作為java預設資料類型,編譯器在編譯過程中不會對此進行報錯,出現的精度損失bug很難發現,尤為要引起注意。

 

3、java中 += 和 = ( + ) 的區別

  在java中有+=這一運算子,初學者可能認為+=與 = ( + ) 是等價的,其實不是這樣的。

 1 class  Demo2 2 { 3     public static void main(String[] args)  4     { 5         byte a; 6         a=5; 7         a+=2;//順利通過編譯,沒有報錯 8         System.out.println(a); 9 10         byte b;11         b=5;12         b=b+2;//不能通過編譯,報錯提示精度損失13         System.out.println(b);14         15     }16 }

  運行結果:

  程式碼分析:

  +=語句將右側結果進行了強制類型轉換,之後在賦給左邊。

  = ( + )語句並沒有強制類型轉換,所以編譯時間報錯精度損失。

  總結:

  +=語句等價於=(強制類型轉換)( + )語句。

  因為存在強制類型轉換,所以要注意精度損失問題。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.