JAVA學習總結基礎篇(一)基本數據類型

一、前言

    編程即是人類爲解決某個問題,通過編寫定義一系列計算過程並讓計算機代之實現的過程。具體爲程序員(Coder/Programmer)通過編寫一些指令讓計算機去識別並運算出結果的過程。而這些指令即是通過編程語言去定義和描述。爲了讓編程更好的解決人們所需解決的種種問題,滿足人們日益增長的需求,越來越多的編程語言被髮明和改進。而Java作爲一門對編程語言有非常好的支持的高級編程語言,已被許多廣大編程愛好者、企業所接受和使用。而本博主之所以編寫此篇乃至之後一系列的文章是爲了鞏固和總結自己對Java的學習和認知,如若此篇文章能對廣大在學習Java的路途中能起到一定的幫助和引導作用,本博主自是倍感榮幸和欣慰。當然,博主爲更好的學習和進步,如果文章中出現錯誤或對本篇文章有建議,歡迎廣大程序員們指正和提出。


二、變量

    變量( variable )源於數學,通常是通過一個英文字母來代表未知的數值(沒有計算出結果的數值)。而在計算機語言中,變量是一個能儲存計算結果和表達一個值的抽象概念,這裏所說的抽象指的是變量本身並不能儲存值,它只是一個將能儲存值的容器抽象出來的一個概念性的詞。

    前面說到編程即是通過一門編程語言去定義一個程序的實現過程,而這個過程只有計算機才能實現。而實現的結果即是這個程序運行完成之後的結果,也即是計算結果,說到計算結果,大家編可以聯想到數學,利用數學知識將一個式子的結果計算出來。大家可以這麼去理解,把人們需要通過編程解決的問題看作是一道數學應用題,把數學當做一門編程語言,把變量看成是計算公式中未知數x、y之類的,那麼,利用數學知識解題的過程即是利用編程語言編程的過程。最後,未知數便是計算結果,變量便存儲了一個編程結果。當然,實際上可能並非如此簡單,但從本質來上說,編程的結果即是一些數據的產生。大家看到的通過運行各種程序或軟件後的各種的行爲或者效果不過是一些數據的各種表達的效果。因此,我要說的是,編程就是產生數據結果,而變量,則在其中起到作用即是,存儲一些給定的、或未知的數據,通常,一個變量可以存儲多個不同的數據。

三、變量在計算機中的存在形式

    在講變量的存在形式之前,我們需要大致瞭解什麼是計算機內存。前面說到,編程的最終結果是產生一些數據,而這些數據保存在哪呢?大家肯定會以爲是變量,那麼變量又儲存在哪呢?在計算機中,數據在計算機設備中的內存或硬盤之中,而變量是用來存儲數據,因此,變量儲存在計算機設備中的內存或硬盤之中,實際上,編程中的變量、程序、程序的運行後產生的結果數據最先都保存在內存中。

    內存是計算機的重要部件之一,它是與CPU溝通的橋樑,所有的程序都運行在內存中。而實際上,內存裏面只保存數據,程序實際上也是數據,計算機中大家看到的圖像也好、音頻也好、文件也罷,實際上都是數據。只不過這些都是一些數據的不同的表現形式所展現的不同效果。

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


                                          

四、數據在計算機內存中的表達形式

    實際上,在計算機中,一切數據都是以二進制的形式存在,因爲CPU其實只能識別0和1,最古老的編程語言(低級編程語言)——機器語言的就是用0和1表示(01010100101010....)計算機將0和1轉換爲高低電平,這實際上就是計算機識別編程語言的原理。而現在這麼多高級編程語言的產生就是將一系列指令轉變爲機器語言,換言之,計算機所有高級編程語言編譯後都將被翻譯成CPU可直接解讀機器語言。十進制數123用二進制表達爲01111011,在計算機中,用8位(bit)二進制數表示一個字節(byte),即1byte = 8 bit。所以,在內存中,保存的都是二進制數據,以8位二進制數即一個字節爲一個存儲單元,每一個存儲單元都有唯一與他對應的地址,二內存地址的表達形式實際上也是一個數值,只不過它一般用一個十六進制或者更高進制位的數來表示。


    我們知道,一個8位二進制數所能表達的數值的範圍是00000000~11111111,即0~255(2的8次方),而內存中以8個二進制數爲一個存儲單元,那麼,在內存中如何存儲更大的值?它對應的地址又是怎樣表達的?通過下面這張圖,我想大家應該就可以理解了:


    從上面這張圖可以看到,在內存中,一個字節(8位)只不過是最小的存儲單位而已,通過將幾個連續幾個存儲單位方便一塊便可以存儲更大的數據。而地址便是跨字節的,按字節編址的話,又這樣一種關係:內存容量=末地址-首地址+1。比如上圖,地址000004 - 000001 = 3 + 1 = 4。內存容量爲4個字節,即32位二進制數,可以保存00000000000000000000000000000000~11111111111111111111111111111111,即是0~4294967295(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編碼規則,必須遵循以下幾條命名規則:

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

 ③初始值

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

        

 ④八種基本數據類型的字面值

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

        

以下是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;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章