Java基本數據類型及數據類型轉換


1、Java中基本數據類型包括:整型(byte、short、int、long)、字符型(char)、布爾型(boolean)、浮點型(float、double)三種類型。

2、所占內存分別為:byte:1Byte;short:2Byte;int:4Byte;long:8Byte;char:2Byte;boolean:1Byte;float:4Byte;double:8Byte;

3、表示數的范圍byte:[-128~127];short:[-32768~32767];int:[-2147483648~2147483647];long:[-9223372036854774808~9223372036854774807];

  float:[3.402823e+38 ~ 1.401298e-45];double:[1.797693e+308~ 4.9000000e-324];

  表示范圍的計算:

        例如byte類型:

              00000_0000~0111_1111:表示0~127;

              10000_0000~1111_1111:表示-128~-1;

              10000_0000 為-0;規定-0 = -128;

4、在Java中所有的整型數據默認都為int類型,浮點型默認為double;其它類型byte、short會隱式轉換(若不超出表示范圍);eg.:

1 byte b = 10;    //隱式轉換
2 short s = 10;    //隱式轉換
3 int i = 10;
4 long l = 10L;    //需要L或l注明
5 float f = 10F;    //需要F或f注明
6 double d = 10;

5、擴展轉換,擴展轉換不必要進行顯示的類型轉換,因為目標類型足夠容納當前類型不會丟失信息。

eg.:

byte b = 10;    //隱式轉換
short s = 10;    //隱式轉換
int i = 10;
long l = 10L;    //需要L或l注明
float f = 10F;    //需要F或f注明
double d = 10;

//擴展轉換        
short bUp = b;
int sUp = s;
long iUp = i;
float lUp = l;
double dUp = f;
        
char ch = '1';
int chUp = ch-48;

 6、強制類型轉換,將容納更多信息的數據類型轉換成一個容量更小的數據類型,可能存在精度損失的風險,編譯器要求程序員進行強制類型轉換;

eg.

int age = 10;
short ageDown = (short)age;//強制類型轉換不會丟失信息
        
System.out.println(ageDown);
        
int width = 130;
byte widthDown = (byte)width;//強制類型轉換會丟失信息
        
System.out.println(widthDown);

輸出:
  10
  -126
float average = 10.5f;
int averageDown = (int)average;
        
System.out.println(averageDown);

輸出:
  10

 

   由於with = 130超出byte數據類型的表示范圍,所以編譯器會進行高位截斷:

    130 原碼:0000_0000_0000_0000_0000_0000_1000_0010 ;

       補碼:0000_0000_0000_0000_0000_0000_1000_0010 ;

    將130的補碼截取低八位:1000_0010 ;

    1000_0010 ;為補碼形式最高位為符號位,可見結果是一個負數,減一取反求得原碼為:1111_1110;

    所以輸出為-126。

  而浮點數直接截斷小數部分。

  通常表達式中的最大的數據類型結果決定了該表達式的數據類型。

7、練習題:

一、二會通過編譯?

/**
 * 一:        
 */
short s1 = 1;
s1 = s1 + 1;
/**
 * 二:        
 */
short s1 = 1;
s1 += 1;

 

 答案:二

  因為在Java中所有整型數據默認都為int型 s1 = s1 + 1; 1為int型需要強制裝換;而 s1 += 1; 編譯器會進行隱式的類型轉換。

 

寫的第一篇文章寫得好方/(ㄒoㄒ)/~~。。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM