JAVA基本數據類型

基本數據類(primitive data type)

        Java是一種強類型語言,每一個變量都必須聲明其類型測試

        Java的數據類型分爲兩大類:基本類型(primitive type)和引用類型 (reference type) 編碼

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

        邏輯型-boolean 設計

        文本型- charcode

        數值型- byte,  short,  int,  long, float,  double對象

20151028140757_746.png

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

整型類型

    整型用於表示沒有小數部分的數值,它容許是負數。ci

    整型的範圍與運行Java代碼的機器無關,這正是Java程序具備很強移植能力的緣由之一。於此相反,C和C++程序須要針對不一樣的處理器選擇最有效的整形。unicode

類型字符串

佔用存儲空間

表數範圍

Byte

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 。

  Java語言的整型常數默認爲int型,聲明long型常量能夠後加‘ l ’或‘ L ’ ,如:

         a = 55555555;  //不出錯,在Int表示的範圍內(21億內)。

         b = 55555555555;  //不加l出錯,已經超過int表示的範圍。    報錯:The literal 55555555555 of type int is out of range 

        Java中沒有無符號類型

 //測試整數類型:byte,short,int,long。以及進制之間的轉換問題
public class TestDataType {
    public static void main(String[] args){
        int a = 10;
        int a2 = 010;
        int a3 = 0xf;
        // byte b = 200;
        // System.out.println(b);
        System.out.println(a);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toOctalString(a));
        System.out.println(Integer.toHexString(a));
        t a5 = 10;
        long a6 = 200;
        byte b2 = 100;   //若是數據的大小沒有超過byte/short/char的表述範圍,則能夠自動轉型。
        long  a7 = 11123213232L;
        long l = 3;
        long l2 = l+3;    //L問題
        } 
}

浮點類型

類型

佔用存儲空間

表數範圍

Float

4字節

-3.403E38~3.403E38

Double

8字節

-1.798E308~1.798E308

float類型又被稱做單精度類型,尾數能夠精確到7位有效數字,在不少狀況下,float類型的精度很難知足需求。

double表示這種類型的數值精度是float類型的兩倍,又被稱做雙精度,絕大部分應用程序都採用double類型。

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

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

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

double f = 314e2;  //314*10^2-->31400.0
double f2 = 314e-2; //314*10^(-2)-->3.14

Float類型的數值有一個後綴F/f ,沒有後綴F/f的浮點數值默認爲double類型。也能夠在浮點數值後添加後綴D/d, 以明確其爲double類型

浮點類型float, double的數據不適合在不允許舍入偏差的金融計算領域。若是須要進行不產生舍入偏差的精確數字計算,須要使用BigDecimal

注:

主要理由:因爲字長有限,浮點數可以精確表示的數是有限的,於是也是離散的。浮點數通常都存在舍入偏差,不少數字沒法精確表示(例如0.1),其結果只能是接近,但不等於。

二進制浮點數不能精確的表示0.1,0.01,0.001這樣10的負次冪。並非全部的小數都能能夠精確的用二進制浮點數表示。

最好全完避免使用浮點數比較

       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");
       }else{
           System.out.println("d1!=d2");
       }

大數值:

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

浮點數使用總結:

1.         默認是double

2.         浮點數存在舍入偏差,不少數字不能精確表示。若是須要進行不產生舍入偏差的精確數字計算,須要使用BigDecimal類。

3.         避免比較中使用浮點數

代碼:

//測試浮點數
public class TestFloatType {
    public static void main(String[] args){
        //double d = 3.14;   //浮點數常量默認類型是double。
        //float f = 6.28F;
        double d2 = 314e-2;   //採用科學計數法的寫法
        System.out.println(d2);
        float f = 0.1f;
        double d = 1.0/10;
        System.out.println(f==d);   //false
    }
}

字符類型(2個字節)

     .單引號用來表示字符常量。例如‘A’是一個字符,它與「A」是不一樣的,「A」表示含有一個字符的字符串。

    .  char 類型用來表示在Unicode編碼表中的字符。

      Unicode編碼被設計用來處理各類語言的全部文字,它佔2個字節,可容許有65536個字符;ASCII碼佔1個字節,可容許有128個字符,是Unicode編碼表中前128個字符。

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

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

char c = ‘\u0061;

 .Java 語言中還容許使用轉義字符 ‘\’ 來將其後的字符轉變爲其它的含義,

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

轉義符

含義

Unicode值

\b

退格(backspace)

\u0008

\n

換行

\u000a

\r

回車

\u000d

\t

製表符(tab)

\u0009

\「

雙引號

\u0022

\‘

單引號

\u0027

\\

反斜槓

\u005c

 注:之後咱們學的String類,實際上是字符序列(char sequence)。

布爾類型

boolean類型(一位,不是一個字節)    boolean類型有兩個值,true和false,不能夠 0 或非 0 的整數替代 true 和 false ,這點和C語言不一樣。

boolean 類型用來判斷邏輯條件,通常用於程序流程控制。

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

代碼

//測試char
public class TestCharType {
    public static void main(String[] args){

        char c1 = 'a';
        char c2 = '尚';   //unicode  2: 0-65535
        char c3 = '\n';
        System.out.print(c1);
        System.out.print(c3);
        System.out.print(c2);

        char c4 = 'a';
        int i = c4 + 2;
        char c5 = (char)i;   //強制轉型
        System.out.println(c5);
相關文章
相關標籤/搜索