1. 程式人生 > >java自動型別轉換與強制型別轉換

java自動型別轉換與強制型別轉換

自動型別轉換就是自發的進行,你可以從輸出的結果看出,外表是看不出來的。我們知道資料型別有很多種,大小也不一樣,就像水桶似的,有1升的,2升的,4升的,自動型別轉換就相當於把小的水桶裡面的水裝到大的裡面去。比如


  int a = 10;


  double b = a;


  輸出b是10.0;沒毛病,合情合理。a 的值是10(整型32位),將它的值賦給b(雙精度64位),1升桶裡的水倒進2升桶裡面,沒問題。其餘的float byte char ---只要是小範圍給大範圍,統統會隱式轉換,沒問題。


  這裡說下char(字元型別)這個有點意思,上例子


  byte b = 12;


  char c = 'a';


  b+c = 109;


  驚不驚喜,意不意外!是這樣的,數字與char 型別運算時,char先轉換為ASCII等字元編碼表中有對應的數值,然後進行計算。char與自身運算時也是先轉換為ASCII等字元編碼表中有對應的數值。資料型別提升至int。


  強制型別轉換就是明明自身不願意,你非要人家轉換。明明你想學習,你媽非讓你玩遊戲(不玩遊戲就打你),強制,絕對強制。(ps:是不是親生的--哈哈)


  比如


  double d = 10.9;


  int a = d;報錯,絕對報錯,不報錯砍我---在預設情況下編譯器是不允許我們這樣做的,如果你就是想這樣轉換,也可以


  int a = (int) d; 這樣就可以了,這就是強制轉換,把一個裝滿2升水的大桶倒進1升的桶裡面,很明顯多餘的水就灑出了,所以強制轉換會造成資料的丟失。


  在說一說char 比如


  long a = 4000000L;


  char b = (char)a;


  b = ? 如果強制轉換為char型別的話,會對照ASCII等字元編碼表 找出所對應的字元。


  最後說說字串。任何只要與字串String相加就會被String吃到肚子裡增加字串的長度。

知海匠庫java培訓課程體系研發團隊來自網易系大咖,設計合理,知識點完整,重點突出;課程與最新技術同步,對接一線網際網路前端掌握技能;教學以授課+專案實戰教學”相結合的方式,更加突出實操能力,貼合企業的急需人才方向。