天天看點

Java 基本資料類型

變量就是申請記憶體來存儲值。也就是說,當建立變量的時候,需要在記憶體中申請空間。

記憶體管理系統根據變量的類型為變量配置設定存儲空間,配置設定的空間隻能用來儲存該類型資料。

Java 基本資料類型

是以,通過定義不同類型的變量,可以在記憶體中儲存整數、小數或者字元。

Java 的兩大資料類型:

内置資料類型

引用資料類型

Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字元類型,還有一種布爾型。

byte:

byte 資料類型是8位、有符号的,以二進制補碼表示的整數;

最小值是 -128(-2^7);

最大值是 127(2^7-1);

預設值是 0;

byte 類型用在大型數組中節約空間,主要代替整數,因為 byte 變量占用的空間隻有 int 類型的四分之一;

例子:byte a = 100,byte b = -50。

short:

short 資料類型是 16 位、有符号的以二進制補碼表示的整數

最小值是 -32768(-2^15);

最大值是 32767(2^15 - 1);

Short 資料類型也可以像 byte 那樣節省空間。一個short變量是int型變量所占空間的二分之一;

例子:short s = 1000,short r = -20000。

int:

int 資料類型是32位、有符号的以二進制補碼表示的整數;

最小值是 -2,147,483,648(-2^31);

最大值是 2,147,483,647(2^31 - 1);

一般地整型變量預設為 int 類型;

預設值是 0 ;

例子:int a = 100000, int b = -200000。

long:

long 資料類型是 64 位、有符号的以二進制補碼表示的整數;

最小值是 -9,223,372,036,854,775,808(-2^63);

最大值是 9,223,372,036,854,775,807(2^63 -1);

這種類型主要使用在需要比較大整數的系統上;

預設值是 0L;

例子: long a = 100000L,Long b = -200000L。

"L"理論上不分大小寫,但是若寫成"l"容易與數字"1"混淆,不容易分辯。是以最好大寫。

float:

float 資料類型是單精度、32位、符合IEEE 754标準的浮點數;

float 在儲存大型浮點數組的時候可節省記憶體空間;

預設值是 0.0f;

浮點數不能用來表示精确的值,如貨币;

例子:float f1 = 234.5f。

double:

double 資料類型是雙精度、64 位、符合 IEEE 754 标準的浮點數;

浮點數的預設類型為 double 類型;

double類型同樣不能表示精确的值,如貨币;

預設值是 0.0d;

例子:

7 是一個 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:

boolean資料類型表示一位的資訊;

隻有兩個取值:true 和 false;

這種類型隻作為一種标志來記錄 true/false 情況;

預設值是 false;

例子:boolean one = true。

char:

char 類型是一個單一的 16 位 Unicode 字元;

最小值是 \u0000(十進制等效值為 0);

最大值是 \uffff(即為 65535);

char 資料類型可以儲存任何字元;

例子:char letter = 'A';。

對于數值類型的基本類型的取值範圍,我們無需強制去記憶,因為它們的值都已經以常量的形式定義在對應的包裝類中了。請看下面的例子:

public class PrimitiveTypeTest {

public static void main(String[] args) {

// byte

System.out.println("基本類型:byte 二進制位數:" + Byte.SIZE);

System.out.println("包裝類:java.lang.Byte");

System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);

System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);

System.out.println();

// short

System.out.println("基本類型:short 二進制位數:" + Short.SIZE);

System.out.println("包裝類:java.lang.Short");

System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);

System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);

// int

System.out.println("基本類型:int 二進制位數:" + Integer.SIZE);

System.out.println("包裝類:java.lang.Integer");

System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);

System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);

// long

System.out.println("基本類型:long 二進制位數:" + Long.SIZE);

System.out.println("包裝類:java.lang.Long");

System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);

System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);

// float

System.out.println("基本類型:float 二進制位數:" + Float.SIZE);

System.out.println("包裝類:java.lang.Float");

System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);

System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);

// double

System.out.println("基本類型:double 二進制位數:" + Double.SIZE);

System.out.println("包裝類:java.lang.Double");

System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);

System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);

// char

System.out.println("基本類型:char 二進制位數:" + Character.SIZE);

System.out.println("包裝類:java.lang.Character");

// 以數值形式而不是字元形式将Character.MIN_VALUE輸出到控制台

System.out.println("最小值:Character.MIN_VALUE="

+ (int) Character.MIN_VALUE);

// 以數值形式而不是字元形式将Character.MAX_VALUE輸出到控制台

System.out.println("最大值:Character.MAX_VALUE="

+ (int) Character.MAX_VALUE);

}

編譯以上代碼輸出結果如下所示:

Float和Double的最小值和最大值都是以科學記數法的形式輸出的,結尾的"E+數字"表示E之前的數字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

實際上,JAVA中還存在另外一種基本類型 void,它也有對應的包裝類 java.lang.Void,不過我們無法直接對它們進行操作。

下表列出了 Java 各個類型的預設值:

資料類型

預設值

byte

short

int

long

0L

float

0.0f

double

0.0d

char

'u0000'

String (or any object)

null

boolean

false

public class Test {

static boolean bool;

static byte by;

static char ch;

static double d;

static float f;

static int i;

static long l;

static short sh;

static String str;

System.out.println("Bool :" + bool);

System.out.println("Byte :" + by);

System.out.println("Character:" + ch);

System.out.println("Double :" + d);

System.out.println("Float :" + f);

System.out.println("Integer :" + i);

System.out.println("Long :" + l);

System.out.println("Short :" + sh);

System.out.println("String :" + str);

執行個體輸出結果為:

在Java中,引用類型的變量非常類似于C/C++的指針。引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時被指定為一個特定的類型,比如 Employee、Puppy 等。變量一旦聲明後,類型就不能被改變了。

對象、數組都是引用資料類型。

所有引用類型的預設值都是null。

一個引用變量可以用來引用任何與之相容的類型。

例子:Site site = new Site("Runoob")。

常量在程式運作時是不能被修改的。

在 Java 中使用 final 關鍵字來修飾常量,聲明方式和變量類似:

雖然常量名也可以用小寫,但為了便于識别,通常使用大寫字母表示常量。

字面量可以賦給任何内置類型的變量。例如:

byte、int、long、和short都可以用十進制、16進制以及8進制的方式來表示。

當使用字面量的時候,字首 0 表示 8 進制,而字首 0x 代表 16 進制, 例如:

和其他語言一樣,Java的字元串常量也是包含在兩個引号之間的字元序列。下面是字元串型字面量的例子:

字元串常量和字元常量都可以包含任何Unicode字元。例如:

Java語言支援一些特殊的轉義字元序列。

符号

字元含義

\n

換行 (0x0a)

\r

回車 (0x0d)

\f

換頁符(0x0c)

\b

倒退 (0x08)

\0

空字元 (0x0)

\s

空格 (0x20)

\t

制表符

\"

雙引号

\'

單引号

\\

反斜杠

\ddd

八進制字元 (ddd)

\uxxxx

16進制Unicode字元 (xxxx)

<b>整型、實型(常量)、字元型資料可以混合運算。運算中,不同類型的資料先轉化為同一類型,然後進行運算。</b>

轉換從低級到進階。

資料類型轉換必須滿足如下規則:

1. 不能對boolean類型進行類型轉換。

2. 不能把對象類型轉換成不相關類的對象。

3. 在把容量大的類型轉換為容量小的類型時必須使用強制類型轉換。

4. 轉換過程中可能導緻溢出或損失精度,例如:

因為 byte 類型是 8 位,最大值為127,是以當 int 強制轉換為 byte 類型時,值 128 時候就會導緻溢出。

5. 浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入,例如:

必須滿足轉換前的資料類型的位數要低于轉換後的資料類型,例如: short資料類型的位數為16位,就可以自動轉換位數為32的int類型,同樣float資料類型的位數為32,可以自動轉換為64位的double類型。

public class ZiDongLeiZhuan{

public static void main(String[] args){

char c1='a';//定義一個char類型

int i1 = c1;//char自動類型轉換為int

System.out.println("char自動類型轉換為int後的值等于"+i1);

char c2 = 'A';//定義一個char類型

int i2 = c2+1;//char 類型和 int 類型計算

System.out.println("char類型和int計算後的值等于"+i2);

運作結果為:

解析:c1 的值為字元 a ,查 ASCII 碼表可知對應的 int 類型值為 97, A 對應值為 65,是以 i2=65+1=66。

1. 條件是轉換的資料類型必須是相容的。

2. 格式:(type)value type是要強制類型轉換後的資料類型

執行個體:

public class QiangZhiZhuanHuan{

int i1 = 123;

byte b = (byte)i1;//強制類型轉換為byte

System.out.println("int強制類型轉換為byte後的值等于"+b);

運作結果:

1、 整數的預設類型是 int。

2. 小數預設是 double 類型浮點型,在定義 float 類型時必須在數字後面跟上 F 或者 f。

這一節講解了 Java 的基本資料類型。下一節将探讨不同的變量類型以及它們的用法。