JAVA基礎總結(4)——JAVA的基本數據類型

**

前言

**

在前面章節中,我們在定義類的屬性時用到了幾個關鍵字(String、char、short、int),它們用來確定類屬性所屬的類型,即所屬的類,因爲類屬性也是對象。但實際上,char、short和int這些關鍵字確切的說,並不是類,它們只是用來指定類屬性基本數據類型的關鍵字,除了這三個實際上還有5個,也就是說JAVA中有8個基本數據類型。

變量

類屬性又稱爲類的成員變量,以下簡稱變量,JAVA的8個基本數據類型即用來指定變量的類型;

變量在計算機中的存儲形式

在將這8個基本數據類型之前,我們先來了解一下,變量在計算機中的存儲形式:

在講變量的存在形式之前,我們需要大致瞭解什麼是計算機內存。在計算機中,數據在計算機設備中的內存或硬盤之中,而變量是用來存儲數據,因此,變量儲存在計算機設備中的內存或硬盤之中,實際上,編程中的變量、程序、程序的運行後產生的結果數據最先都保存在內存中。 內存是計算機的重要部件之一,它是與CPU溝通的橋樑,所有的程序都運行在內存中。而實際上,內存裏面只保存數據,程序實際上也是數據,計算機中大家看到的圖像也好、音頻也好、文件也罷,實際上都是數據。只不過這些都是一些數據的不同的表現形式所展現的不同效果。

那麼計算機中的內存是如何保存數據的?計算機內存被劃分幾個部分,每一部分都存儲着計算機中不同的數據,具體爲那幾部分這裏不做詳述。我們需要了解的是,每一部分,每一個數據都有它對應的一個位置,位置用什麼來表達?聯想到現實生活,位置用地址來表達。也就是說,在內存中,每一個數據都有它唯一對應的一個地址,一個地址所指向的位置對應一個數值。
在這裏插入圖片描述 在這裏插入圖片描述

數據在計算機中表達形式

實際上,在計算機中,一切數據都是以二進制的形式存在,因爲CPU其實只能識別0和1,最古老的編程語言(低級編程語言)——機器語言的就是用0和1表示(01010100101010…)計算機將0和1轉換爲高低電平,這實際上就是計算機識別編程語言的原理。而現在這麼多高級編程語言的產生就是將一系列指令轉變爲機器語言,換言之,計算機所有高級編程語言編譯後都將被翻譯成CPU可直接解讀機器語言。十進制數123用二進制表達爲01111011,在計算機中,用8位(bit)二進制數表示一個字節(byte),即1byte = 8 bit。所以,在內存中,保存的都是二進制數據,以8位二進制數即一個字節爲一個存儲單元,每一個存儲單元都有唯一與他對應的地址,二內存地址的表達形式實際上也是一個數值,只不過它一般用一個十六進制或者更高進制位的數來表示。
在這裏插入圖片描述
我們知道,一個8位二進制數所能表達的數值的範圍是0000000011111111,即0255(2的8次方),而內存中以8個二進制數爲一個存儲單元,那麼,在內存中如何存儲更大的值?它對應的地址又是怎樣表達的?通過下面這張圖,我想大家應該就可以理解了:
在這裏插入圖片描述
從上面這張圖可以看到,在內存中,一個字節(8位)只不過是最小的存儲單位而已,通過將幾個連續幾個存儲單位方便一塊便可以存儲更大的數據。而地址便是跨字節的,按字節編址的話,又這樣一種關係:內存容量=末地址-首地址+1比如上圖,地址000004 - 000001 = 3 + 1 = 4。內存容量爲4個字節,即32位二進制數,可以保存0000000000000000000000000000000011111111111111111111111111111111,即是04294967295(2的32次方)。以此類推,地址跨度越大,內存容量越大,所能存儲的數值就越大。
在這裏插入圖片描述

變量與內存的關係

變量實際上,可以這樣理解。變量就是一個內存地址,而一個內存地址指向一個內存空間,往變量裏面存值,就是往內存空間中存值,也就是說,存儲在變量中的值,就是存值在內存中,一個變量代表一個指定的內存空間。在編程語言中,當我們聲明一個變量的時候,實際上在就是在內存中申請了一塊隨時可以存放數值的內存空間,而這個內存空間的大小視你的變量類型而定,不同類型的變量,所佔用的內存空間的大小不同。

JAVA中的變量

(一)變量類型

Java將數據分爲整數(byte、short、int、long)、浮點數(float、double)、字符(char)、布爾(boolean)四大類共八種,每一種都有它的一個所能存儲值的範圍,每一種變量類型只能存儲對應此類型和對應範圍內的值。聯繫上文,每一個類型的變量在內存中佔用一定的空間,佔用的空間的大小和它所能存儲值的範圍相關。這就是JAVA的8種基本數據類型。

在這裏插入圖片描述
前面說到一個8位二進制數的範圍爲0~255,那麼JAVA中的整型如何存儲一個負數?關於二進數如何保存負數的相關大家可自行查詢相關資料,這裏不在贅述。

(二)char類型

char類型在這裏比較特殊,因爲它是用來儲存字符數據的,包括英文字母、符號、中文字符等等,前面說到計算機內存中不是存儲的二進制數嗎?那麼二進制數怎麼表示字符數據呢?這裏就涉及到了ASCII碼和Unicode碼的問題,大家可以自行查詢資料瞭解,這裏不再做詳細說明。

(三)Java中變量的定義

Java中對以上八種數據類型變量的定義格式爲:

變量類型名 變量名 = 初始值(對應該變量類型的字面值);

其中變量類型名爲上表中的八種,變量名爲自定義,初始值可指定可不指定,不指定時的形式爲: 變量類型名 變量名;注意標識符“;”,java中每一條語句都應以分號結尾,java中所有的標識符號都爲英文符號,而非中文符號。

下面對上述公式中各個部分做詳細說明:

①變量類型名

即爲上表8中基本類型的英文標識符(byte、short.....)

②變量名

變量名爲自行定義,但爲了代碼的可讀性和JAVA編碼規則,必須遵循以下幾條命名規則:

可由字母、數字、下劃線和美元符組成,其中數字不能開頭
不能包含空格
應該用有意義的單詞
如果只有一個單詞,所有字母小寫,如果有多個單詞,從第二個單詞開始,首字母大寫(即駝峯命名法)。

③初始值

  在定義變量時,如果不指定初始值,則默認值爲該變量類型對應的初始值。

在這裏插入圖片描述
④八種基本數據類型的字面值

 在定義變量時,如果知道初始值,則必須是對應該變量數據類型的字面值。

在這裏插入圖片描述

(四)成員變量與局部變量

成員變量在類中定義,用於指定類的屬性。而局部變量定義在方法體中,用於存儲數據;注意:成員變量默認是有初始值的,所以一般在定義類屬性時沒有給它顯示賦值。但是局部變量默認是沒有初始值的,所以我們在方法體中定義局部變量的時候必須給他賦一個初始值,賦值用等於符號(=)表示。

以下是局部變量定義示例代碼:

public class Main{
	public static void main(String[] args) {
		byte b = 0b00110100;
		short s = 12223;
		int i = 546363;
		int i2 = 0xFBCA2;
		long l = 13563486597498l;
		float f = 3.25f;
		double d = 3.14159;
		char c = 'x';
		char c2 = '我';
		boolean isOk = true;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章