1. 程式人生 > 遊戲資訊 >王者:鎧終於削弱,伽羅暴擊率提升,楊戩史詩級加強,四英雄調整

王者:鎧終於削弱,伽羅暴擊率提升,楊戩史詩級加強,四英雄調整

Java中的8大基本資料型別

基本資料型別的種類和大小、資料在計算機中的儲存形式(二進位制補碼)、強制型別轉換在二進位制中的原理、字面值的賦值規則和多種資料型別混合計算轉型規則。

 

1.byte:  位元組型  1個位元組  8位   [-128,127]

2.short::  短整型  2個位元組  16位  [-2^15,2^15-1]   

3.int:    整形   4個位元組  32位  [-2^31,2^31-1]

4.long:   長整形  8個位元組  64位  

5.float:    單精度  4個位元組  32位

6.double:  雙進度  8個位元組  64位

7.boolean:  布林型  1個位元組  8位 

8.char:    字元型  2個位元組  16位

注意:

1.在java語言中整數型字面值預設當做int型別,如果想讓整數型字面值被當做long型別,需要在字面值後面新增l/L,一般多用L。

  

 

  報錯的原因是 自動將字面值當做int型別來處理,而2147483648已經超出了int的範圍,所以需要將它標識為其他的能容納它的型別。

  

 

2.強制轉換的原理 

  以long 型別強制轉換為int型別為例,假設有一個long型別的資料是 00000000  00000000  00000000  00000000  00000000  00000000  00000000  01100100,

  將它強轉為int,就是直接將long型別的前四個位元組砍掉,只拿後面的四個位元組。00000000  00000000  00000000  01100100。

  所以,強制型別轉換需謹慎,有可能會丟失精度。

  

  上例:解剖  (計算機儲存資料是以二進位制補碼的形式儲存  正數的補碼和原始碼相同,負數的補碼  是負數的絕對值對應的二進位制碼 對位取反再+1)

  2147483648L 的二進位制是  00000000  00000000  00000000  00000000  10000000  00000000  00000000  00000000

  強制型別轉換後得到的是  10000000  00000000  00000000  00000000  (砍掉前4個位元組)

  也就是說  10000000  00000000  00000000  00000000  這是原資料的補碼形式  補碼求原始碼

  先減1     01111111    11111111   11111111    11111111

  對位取反  10000000  00000000  00000000  00000000 

  所以原始碼是 10000000  00000000  00000000  00000000  2147483648

  而補碼的符號位是1(首位),則表示該資料是負數,所以原資料是  -2147483648

  2147483648L是long型別,8個位元組,符號位是0,所以對於long型別來說2147483648L是正數

  

 

   按道理說整形字面值賦值給byte,大專小需要強制型別轉換,但是編譯通過,而128編譯報錯,說明底層字面值只要在byte範圍內是不需要認為強制型別轉換的,此時要糾正錯誤就需要強制型別轉換。

  

   

  具體還原過程以及計算結果

  

 

  char型別嘗試

    常見的一些字元的ASCII碼 A-->65,a-->97,數字0-->48(其他數字或字元都是依次遞增)

  

  double和float

    帶小數的值預設是double 型別,double型別的字面值賦值給float型別變數,大轉小需要強制型別轉換,所以編譯報錯

 

    解決辦法

      1.強制型別轉換為float

      

      2.將字面值標識為float型別

       

3.八種基本資料型別之間的轉換規則

  1、八種基本資料型別除了boolean外,其他的都能相互轉換。

  2、小容量可以自動向大容量轉換,即自動型別轉換。容量大小如下

    byte<<short(char)<<int<<long<<float<<double

    

 

    注意:

      1、不管浮點型佔幾個位元組,其容量都比整形大

      2、char和short表示的種類不同,但是char可以取到更大的正整數

  3、強制型別轉換慎用,因為有可能會丟失精度

  4、當一個整數字面值沒有超過byte,short,char型別的取值範圍時,可以直接複製給byte,short,char型別,此時的轉換機制底層幫我們完成了,目的是方便程式設計師開發

  5、byte,short、char運算時,先轉換成int後,再參與運算。

  6、多種資料型別混合運算時,先轉換成參與運算中最大的資料型別後,再進行計算。