[Java基礎]之 資料型別轉換

小杆子發表於2021-02-07
資料型別轉換存在的意義

資料型別轉換,在實際的應用開發中,常常會對不同型別的數字型別進行計算,所以就用到了資料轉換。一方面,使用算術計算符對數字進行運算時,系統在適當的時候回進行自動轉換;另一放方面,程式開發人員還可以強制進行資料轉換,這個操作有時候灰出現精度丟失等問題

資料轉換的依據:取決資料的取值範圍

byte -> short -> int ->long ->float ->double

char->

【Java基礎】之 資料型別轉換

注意:

1.boolean 型別不能夠參與型別轉換
2.char 和byte/short 只有交集關係,沒有子集關係

1.自動型別轉換

將小型別的資料轉換為大型別的資料,系統會自動轉換

  // 由於右邊int型別的數值正好在byte範圍之內,所以系統幫我們做了轉換

  byte by2 = 127;

  System.out.println(by2);
2.強制型別轉換

將大型別的資料轉換為小型別的資料,會編譯報錯

解決辦法:強制型別轉換

格式:

目標型別 變數名 =(目標型別) 被轉換的型別;

強制型別轉換會出現的問題:

1.精度的丟失

2.資料的溢位

3.byte/short特例
// 由於右邊int型別的數值正好在byte範圍之內,所以系統幫我們做了轉換

  byte by2 = 127;

  System.out.println(by2);

  short s = 32767;

  System.out.println(s);
4.byte/short和char 參與轉換,都需要強制型別轉換
//byte /short/char型別轉換比如強制轉換,因為他們在取值範圍只存在交集關係,不存在父子集關係。

  byte by3 = 65;

  char ch3 = (char)by3;

  System.out.println(ch3);

  char ch4 = '0';

  byte by4 = (byte)ch4;

  System.out.println(by4);
5.表示式型別提升

當表示式的運算子兩邊型別不一致的時候,結果的型別會自動向高型別轉換

// 當表示式的運算子兩邊型別不一致的時候,結果的型別會自動向高型別轉換

  i5 = (int)(i5 + f3);

  System.out.println(i5);
6.當byte short char 之間參與運算的時候,底層都會轉換為int 型別來計算
// 6.當byte short char 之間參與運算的時候,底層都會轉換成int型別來計算  

  byte by6 = 97;

  short s2 = 1;

  char ch6 = 'a';

  short s3 = (short)(by6 + s2 + ch6);

  System.out.println(s3);  
7.boolean型別不能夠參與運算和轉換
// 7.boolean型別不能夠參與運算和轉換,但是在JavaScript中可以

  boolean bool = true;

  // int i6 = bool + 1;

  // int i6 = (int)bool;
8.字串在參與運算中的轉換問題,字串相加是拼接操作
System.out.println(2 + 2 + "22" + 2 + 2); // 輸出結果為42222。   當字串與其他型別拼接以後就成為一個新的字串
9.變數計算和常量計算問題

變數相加,系統無法判斷具體的結果

//兩個不同型別的變數相加,通不過編譯器,

  byte bbb2 = 10;

  short sss2 = 20;

  short ttt = bbb2 + sss2;

  System.out.println(ttt);

  //報錯誤程式碼

  //需要強制標明型別  

常量相加,在編譯時期,系統就會運算結果

 //編譯器對常量進行了計算,然後int型別的30沒有超byte的範圍,實行了byte特列

  byte b3 = 10 + 20;

  System.out.println(b3);

  //正確程式碼
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章