Java 是一種強類型的語言,聲明變量時必須指明數據類型。變量(variable)的值占據一定的內存空間。不同類型的變量占據不同的大小。
Java中共有8種基本數據類型,包括4 種整型、2 種浮點型、1 種字符型、1 種布爾型,請見下表。
數據類型 | 說明 | 所占內存 | 舉例 | 備注 |
---|---|---|---|---|
byte | 字節型 | 1 byte | 3, 127 | |
short | 短整型 | 2 bytes | 3, 32767 | |
int | 整型 | 4 bytes | 3, 21474836 | |
long | 長整型 | 8 bytes | 3L, 92233720368L | long最后要有一個L字母(大小寫無所謂)。 |
float | 單精度浮點型 | 4 bytes | 1.2F, 223.56F | float最后要有一個F字母(大小寫無所謂)。 |
double | 雙精度浮點型 | 8 bytes | 1.2, 1.2D, 223.56, 223.56D | double最后最好有一個D字母(大小寫無所謂)。 |
char | 字符型 | 2 bytes | 'a', ‘A’ | 字符型數據只能是一個字符,由單引號包圍。 |
boolean | 布爾型 | 1 bit | true, false |
對於整型數據,通常情況下使用 int 類型。但如果表示投放廣島長崎的原子彈釋放出的能量,就需要使用 long 類型了。byte 和 short 類型主要用於特定的應用場合,例如,底層的文件處理或者需要控制占用存儲空間量的大數組。
在Java中,整型數據的長度與平台無關,這就解決了軟件從一個平台移植到另一個平台時給程序員帶來的諸多問題。與此相反,C/C++ 整型數據的長度是與平台相關的,程序員需要針對不同平台選擇合適的整型,這就可能導致在64位系統上穩定運行的程序在32位系統上發生整型溢出。
八進制有一個前綴 0,例如 010 對應十進制中的 8;十六進制有一個前綴 0x,例如 0xCAFE;從 Java 7 開始,可以使用前綴 0b 來表示二進制數據,例如 0b1001 對應十進制中的 9。同樣從 Java 7 開始,可以使用下划線來分隔數字,類似英文數字寫法,例如 1_000_000 表示 1,000,000,也就是一百萬。下划線只是為了讓代碼更加易讀,編譯器會刪除這些下划線。
另外,不像 C/C++,Java 不支持無符號類型(unsigned)。
float 類型有效數字最長為 7 位,有效數字長度包括了整數部分和小數部分。例如:
- float x = 223.56F;
- float y = 100.00f;
注意:每個float類型后面都有一個標志“F”或“f”,有這個標志就代表是float類型。
double 類型有效數字最長為 15 位。與 float 類型一樣,double 后面也帶有標志“D”或“d”。例如:
- double x = 23.45D;
- double y = 422.22d;
- double z = 562.234;
注意:不帶任何標志的浮點型數據,系統默認是 double 類型。
大多數情況下都是用 double 類型,float 的精度很難滿足需求。
不同數據類型應用舉例:
- public class Demo {
- public static void main(String[] args){
- // 字符型
- char webName1 = '微';
- char webName2 = '學';
- char webName3 = '苑';
- System.out.println("網站的名字是:" + webName1 + webName2 + webName3);
- // 整型
- short x=22; // 十進制
- int y=022; // 八進制
- long z=0x22L; // 十六進制
- System.out.println("轉化成十進制:x = " + x + ", y = " + y + ", z = " + z);
- // 浮點型
- float m = 22.45f;
- double n = 10;
- System.out.println("計算乘積:" + m + " * " + n + "=" + m*n);
- }
- }
運行結果:
網站的名字是:微學苑
轉化成十進制:x = 22, y = 18, z = 34
計算乘積:22.45 * 10.0=224.50000762939453
從運行結果可以看出,即使浮點型數據只有整數沒有小數,在控制台上輸出時系統也會自動加上小數點,並且小數位全部置為 0。
對布爾型的說明
如果你有編程經驗,了解布爾型,請跳過下面的教程,下面的教程針對只有C語言基礎的讀者(C語言沒有布爾型)。
在C語言中,如果判斷條件成立,會返回1,否則返回0,例如:
- #include <stdio.h>
- int main(){
- int x = 100>10;
- int y = 100<10;
- printf("100>10 = %d\n", x);
- printf("100<10 = %d\n", y);
- return 0;
- }
運行結果:
100>10 = 1
100<10 = 0
但是在Java中不一樣,條件成立返回 true,否則返回 false,即布爾類型。例如:
public class Demo { public static void main(String[] args){ // 字符型 boolean a = 100>10; boolean b = 100<10; System.out.println("100>10 = " + a); System.out.println("100<10 = " + b); if(a){ System.out.println("100<10是對的"); }else{ System.out.println("100<10是錯的"); } } }
運行結果:
100>10 = true
100<10 = false
100<10是對的
實際上,true 等同於1,false 等同於0,只不過換了個名稱,並單獨地成為一種數據類型。
參考:https://www.cnblogs.com/ok932343846/p/6743651.html