Java語法基礎之基本數據類型和引用數據類型

Java是強類型語言,每個變量都必須有它的數據類型,而且變量之間不能隨便轉換數據類型python

主流的語言大多都是強類型 C、C++、Java、python程序員

弱類型語言數組

PHPspa

什麼是數據類型?code

  • 數據類型,表示的是一個數據集合和基於該數據集合的一組合法操做

數據類型怎麼分類?接口

  • 基本數據類型:JDK默認提供
  • 引用數據類型
    • 接口
    • ....

基本數據類型(base date type)

有哪些基本數據類型?內存

四類八種ci

  • 整型
    • byte:字節型,佔1個字節空間
    • short:短整型,佔2個字節空間
    • int:整型,佔4個字節空間
    • long:長整型,佔8個字節空間
  • 浮點型
    • float:單精度浮點型,佔4個字節
    • double:雙精度浮點型,佔8個字節
  • 字符類型
    • char:佔4個字節,表示單個字符
  • 布爾類型
    • boolean:具體佔多少內存,瞭解便可
      • 根據JVM規範,在內存中boolean看成int處理,佔4個字節
      • boolean數組當成byte數組處理,一個boolean元素佔1個字節

基本數值類型的取值範圍

基本數據類型 字節長度 大小(位) 最小值 最大值 取值範圍
byte 1字節 8bit -2^7 2^7-1 -128 ~ 127
short 2字節 16bit -2^15 2^15-1 -32768 ~ 32767
int 4字節 32bit -2^31 2^31-1 -2147483648 ~ 2147483647(21億出頭)
long 8字節 64bit -2^63 2^63-1 -9223372036854774808 ~ 9223372036854774807(大概922億億)
float 4字節 32bit - - -3.403E383.404E38(有效位數67位)
double 8字節 64bit - - -1.798E308~1.798E308(有效數字15位)

引用數據類型(reference)

礙於知識點的限制,目前只要知道字符串(String)是一種引用數據類型便可字符串

String屬於引用數據類型中的類it

基本數據類型的數據類型轉換(conversion)

什麼是數據類型轉換呢?

  • Java是強類型語言,變量一旦聲明後,數據類型不會輕易改變,但也並不是徹底不可能改變
  • 咱們將Java中變量的數據類型由某一種轉換爲另外一種,這個過程叫作數據類型轉換

數據類型轉換的分類

  • 自動類型轉換,也叫向上轉型
  • 強制類型轉換,也叫向下轉型

基本數據類型的自動類型轉換(automatic)

什麼是自動類型轉換?

  • 數據類型無需程序員操做,由系統自動轉換

基本數據類型的自動類型轉換的規則

  • byte、short、char之間不互相轉換,一旦之間發生運算,一概自動轉換爲int進行運算,結果是int
  • byte、short、char任一數據類型與int進行計算,一概自動轉換爲int進行計算,結果是int
  • byte、short、char、int任一數據類型與long進行計算,一概自動轉換爲long進行計算,結果是long
  • byte、short、char、int、long任一數據類型與float進行計算,一概自動轉換爲float進行計算,結果是float
  • byte、short、char、int、long、float任一數據類型與double進行計算,一概自動轉換爲double進行計算,結果是double

精度問題

  • 當大變小時,有可能會出現新的數據類型沒法容納所有的數據,致使部分信息被截斷丟失,數據失真

    • 這種現象,有一個專業名詞叫」精度損失「
  • 當int、long(4字節,8字節)自動轉換成float(4字節)時,可能會由精度損失

  • 當long自動轉換成double(8字節)時,也可能產生精度損失

基本數據類型的強制類型轉換(cast)

什麼是強制類型轉換

  • 數據類型的轉換須要程序員顯式操做,不然報錯

何時須要強制類型轉換

  • 在特別有必要的狀況下,把一個佔內存大的數據類型,轉換成小的數據類型,好比int---->byte

語法

目標數據類型 變量名 = (目標數據類型)(被轉換的變量變量名);

精度問題

  • 強制類型轉換,大變小,精度損失是很常見的
  • 強烈建議,若是不是不進行強制類型轉換,程序就GG,不要使用強制類型轉換,稍有不慎會致使bug
  • 進行強制類型轉換,要嚴格考量,數據類型的取值範圍,像(byte)200這種行爲是很滑稽的

補充

  • boolean類型和其餘數據類型之間不能經過強制類型轉換語法直接轉換
相關文章
相關標籤/搜索