Java數據類型介紹

個人微信:yinhaoliang6

2. Java 數據類型

Java 中的數據類型,分爲引用類型和基本數據類型。基本類型有 8 種,引用類型將在面向對象時詳細講解,此處瞭解即可.

2.1. 八種基本數據類型 ***

整型: byte, short, int, long
浮點型: float, double
字符型: char
布爾型: boolean

2.2.整數類型 ***

整數類型有 byte, short, int, long

類型 佔位 最大值 最小值
byte 8 2^7-1 -2^7
short 16 2^15-1 -2^15
int 32 2^31-1 -2^31
long 64 2^63-1 -2^63
  • byte佔用8位,每位用0或1表示,能夠表示256(2^8)個數據。
  • 這8位分爲符號位(最高位)和數值位(剩餘七位),符號位0表示正數,1表示負數
    整數字面量默認是 int 類型,如果不超出聲明類型的範
    圍, 則可以給小類型直接賦值(不需要強記,在編寫程序過程中會逐漸理解)。
byte b = 128;  //超範圍賦值  
byte b1 = 127;
byte b2 = -128;

使用整數類型(byte, short, int)要注意取值範圍, (-128~127)之間的整數字面量可以直接賦值給byte 類型,Java 會自動處理符號位.
long 類型的字面量需要使用"L",“l” 後綴,否則編譯不通過。注意如圖所示,因爲整數值的默認字面量是 int 類型,13241234856854 明顯超出了 int 的範圍,所以報編譯錯誤,但是如果在後面加了後綴"L",則表示該數是 long 類型的.
java 底層 byte,short 按照 32 位計算(注意 int 類型範圍也是 32 位)

public static void main(String[] args)
{
    long a = 13241234856854; //編譯錯誤  
    long b = 13241234856854L;
}

2.3.浮點數類型 **

用於表示小數的數據類型.
float 類型共 32 位(與 int 相同)
int 類型的數據能表示的範圍比 float 類型小,int 類型數據表示的精度比 float 大.
float 類型因爲精度過低,所以一般很少使用,一般我們會使用 double。
對於float類型來說,它小數點後面有6-7位小數,而對於double類型來說,它小數點後面有15位小數,所以double類型比float類型精度高。又由於15是 7的兩倍多,所以float稱爲單精度浮點型, double稱之爲雙精度浮點型.
double 精度比 int 精確,但是不如 long;double 範圍大於 long。
需要注意的是,浮點數的字面量默認是 double, D d 後綴是 double, f F 是 float。
Java虛擬機規範:https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.2

2.4.字符類型 char **

  1. java中char類型佔2個字節、16位可以存放漢字,字母和數字佔一個字節,一個字節8位,中文佔2個字節,16位
  2. char類型賦值
    char a=’a’; //任意單個字符,加單引號。

char a=’中’;//任意單箇中文字,加單引號。

char a=111;//整數。0~65535。十進制、八進制、十六進制均可。輸出字符編碼表中對應的字符
字符類型是經常用到的,比較有趣,要掌握。字符類型是一個16位無符號整數, 是一個2進制數
這個數值是一個字符的 unicode 編碼值。
unicode 編碼,是全球範圍內的編碼方法, 編制了英文, 中,日,韓,阿拉伯, 希伯來等等共 8 萬多個
字符(unicode 編碼在設計的時候就旨在能表示世界上所有文字)
Java char 的範圍 0~65535 不能表示全部 unicode,但是可以表示 unicode 只能夠最常用的部分,
足夠用的了。
Unicode 編碼中英文部分不與ASCII 碼兼容(ASCII 表示範圍 0~128), 同時英文字符和數字是連續
編碼的。
編碼是什麼?在計算機中不能寫字,只能有用 0 和 1 表示的數,那麼我們人爲做了規定,某個數除
了表示一個數,還可以表示成一個字符。一個 10 進制數 65 代表的字符就是大寫字母 A,如下所示:

public class Test
{
    public static void main(String[] args)
    {
        char c = 65;
        System.out.println(c);    //A
    }
}

這一切都是爲了儘可能的按人的習慣顯示和輸出,在計算機內部永遠是 0 和 1 存儲和運算的。
如下圖,20013 按字符輸出是"中",按數字輸出是 20013.
unicode對照表
http://blog.csdn.net/hherima/article/details/9045861

public static void main(String[] args)
{
    char c = 20013;
    System.out.print(c);  //中  
    System.out.print((int)c);
}

注:例中的(int)c 表示將字符強制類型轉換爲數字,接下來會講。
如上例中,做個運算,如下圖,我們得到的輸出結果是 C,是因爲在 Java 中運仍然按數字運算,
但是輸出時按照它的類型(char)來輸出。

public static void main(String[] args)
{
    char c = '中' + 3;
    System.out.println(c);  //豐  
    System.out.println((int)c);
}

如下案例是利用 Java 提供的產生隨機數的方法隨機生成一個數,然後將此數轉換爲 char 類型

public static void main(String[] args)
{
    Random r = new Random();
    int rInt = r.nextInt(58);  //產生一個隨機數[0,58);
    System.out.println(rInt);
    char c = (char)('A' + rInt);
    System.out.println(c);
}

char 類型是無符號的 16 位整數,最小值爲 0, 最大值爲 65535 = 2^16-1,在程序中爲一個字符
賦值,字符字面量使用單引號,可以爲 char 賦值的有字符、數字、符號,如下所示:
image
注意:特殊字符采用轉義字符表示,如:
‘\n’ 表示回車
‘\t’ 表示製表位字符
‘\’ 表示\
‘’’ 表示單引號
‘"’ 表示雙引號
'\u4e2d’表示 unicode 編碼對應的字符
當我們的控制檯顯示如下爲"?"時,代表在我本操作系統中找不到該數字對應的字庫(我們的操作系統中最多存 2 萬多的漢字,65535 本操作系統也不認識)

2.5.boolean 布爾類型 *

表達: 真(true)/假(false)。一般用於判斷語句塊中,如圖
image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章