Java的基本數據類型


    Java和C語言相同,是一種強類型語言,每個變量都必須聲明其數據類型。 Java的數據類型可分為兩大類:基本數據類型和引用數據類型。

    Java中定義了3類8種基本數據類型

  • 數值型- byte、 short、int、 long、float、 double

  • 字符型- char

  • 布爾型-boolean 

    引用數據類型的大小統一為4個字節,記錄的是其引用對象的地址!

下面對整形變量/常量,浮點型變量/常量,字符型變量/常量,boolean類型變量/常量一一闡述:

· 整形變量/常量

    整型用於表示沒有小數部分的數值,它允許是負數。整型的范圍與運行Java代碼的機器無關,這正是Java程序具有很強移植能力的原因之一。與此相反,C和C++程序需要針對不同的處理器選擇最有效的整型。

類型

占用存儲空間

表數范圍

byte

1字節

-2~   27-1(-128~127)

short

2字節

-215 ~   215-1(-32768~32767)

int

4字節

-231 ~   231-1 (-2147483648~2147483647)約21億

long

8字節

-263 ~   263-1

 

Java 語言整型常量的四種表示形式

  • 十進制整數,如:99, -500, 0

  • 八進制整數,要求以 0 開頭,如:015

  • 十六進制數,要求 0x 或 0X 開頭,如:0x15

  • 二進制數,要求0b或0B開頭,如:0b01110011

 

    Java語言的整型常數默認為int型,聲明long型常量可以后加‘ l ’或‘ L ’ ,建議用大寫 L。

長整型常數的聲明

long a = 55555555;  //編譯成功,在int表示的范圍內(21億內)。
long b = 55555555555;//不加L編譯錯誤,已經超過int表示的范圍。

我們修改成long類型的常量即可:

long b = 55555555555L;

·浮點型變量/常量

    帶小數的數據在Java中稱為浮點型。浮點型可分為float類型和double類型,默認是double類型! 

浮點型數據類型

類型

占用存儲空間

表數范圍

float

4字節

-3.403E38~3.403E38

double

8字節

-1.798E308~1.798E308

    float類型又被稱作單精度類型,尾數可以精確到7位有效數字,在很多情況下,float類型的精度很難滿足需求。而double表示這種類型的數值精度約是float類型的兩倍(14位有效數字),又被稱作雙精度類型,絕大部分應用程序都采用double類型。浮點型常量默認類型也是double。  

Java浮點類型常量有兩種表示形式

  • 十進制數形式,例如:3.14       314.0      0.314 

  • 科學記數法形式,如314e2      314E2      314E-2 

 float類型的數值有一個后綴F或者f ,沒有后綴F/f的浮點數值默認為double類型。也可以在浮點數值后添加后綴D或者d, 以明確其為double類型。

float類型賦值時需要添加后綴F/f

float  f = 3.14F; double d1  = 3.14; double d2 = 3.14D;

浮點數的比較:

例一:

float f = 0.1f; double d = 1.0/10; System.out.println(f==d);//結果為false

例二:

float d1 = 423432423f; float d2 = d1+1; if(d1==d2){ System.out.println("d1==d2");//輸出結果為d1==d2
}else{ System.out.println("d1!=d2"); }

    運行以上兩個示例,發現例一的結果是“false”,而例二的輸出結果是“d1==d2”。這是因為由於字長有限,浮點數能夠精確表示的數是有限的,因而也是離散的。 浮點數一般都存在舍入誤差,很多數字無法精確表示(例如0.1),其結果只能是接近, 但不等於。二進制浮點數不能精確的表示0.1、0.01、0.001這樣10的負次冪。並不是所有的小數都能可以精確的用二進制浮點數表示。

    java.math包下面的兩個有用的類:BigInteger和BigDecimal,這兩個類可以處理任意長度的數值。BigInteger實現了任意精度的整數運算。BigDecimal實現了任意精度的浮點運算。

    因此:不要使用浮點數進行比較!浮點數存在舍入誤差,數字不能精確表示。如果需要進行不產生舍入誤差的精確數字計算,需要使用BigDecimal類。避免比較中使用浮點數,需要比較請使用BigDecimal類。

·字符型變量/常量

    字符型在內存中占2個字節,在Java中使用單引號來表示字符常量。例如’A’是一個字符,它與”A”是不同的,”A”表示含有一個字符的字符串。

    char 類型用來表示在Unicode編碼表中的字符。Unicode編碼被設計用來處理各種語言的文字,它占2個字節,可允許有65536個字符。

字符型舉例:

char eChar = 'a'; char cChar ='中';

  Unicode具有從0到65535之間的編碼,他們通常用從’\u0000’到’\uFFFF’之間的十六進制值來表示(前綴為u表示Unicode)

字符型的十六進制值表示方法:

char c = '\u0061';

轉義字符:

char c2='\n';   //代表換行符

  轉義字符:

轉義符

含義

Unicode

\b

退格(backspace)

\u0008

\n

換行

\u000a

\r

回車

\u000d

\t

制表符(tab)

\u0009

\“

雙引號

\u0022

\‘

單引號

\u0027

\\

反斜杠

\u005c

 

·Boolean類型變量/常量

    boolean類型有兩個常量值,true和false,在內存中占一位(不是一個字節),不可以使用 0 或非 0 的整數替代 true 和 false ,這點和C語言不同。 boolean 類型用來判斷邏輯條件,一般用於程序流程控制 。

Boolean類型:

  boolean flag ; flag = true;   //或者flag=false;
        if(flag) { // true分支
        } else { // false分支
        }

    Less is More!!!不要這樣寫:if ( flag == true ),容易寫錯成if(flag=true),常用的寫法是if ( flag )或者if ( !flag)。

 

2019-02-13      13:05:59      房廷飛


免責聲明!

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



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