Java基礎(三) 數據類型與數組

這個系列的文章標題都是Java基礎,但是並不打算談一些所有語言共通的東西,比如變量賦值、循環、判斷等等。我覺得學習一門語言應該把注意力更多的放在它的特性上,而不是太過關注語言的通性。廢話不多說了,從這篇文章開始,正式進入java的學習吧。

基本數據類型和引用數據類型

java中的8種基本數據類型

  • 數值型
    • 整型:byte、int、short、long
    • 浮點型:float、double
  • 字符型:char
  • 布爾型:boolean

除了上述8種基本數據類型以外,其餘的全部都是引用數據類型,數組也是引用類型。這兩種類型的數據之間有着本質的區別:基本類型數據指的是值,而引用類型數據指的是地址值。雖然都是值,但二者絕不是同一種東西。

在理解上面的概念之前,我們先要知道java中的兩種操作:

  • =:賦值操作
  • ==:比值操作

對於基本類型數據而言,賦值、比值指的是數值;對於引用類型數據而言,賦值、比值指的是地址值。(請一定要牢記此概念!)

8種基本數據類型在java中都有對應的引用類型,分別是Byte、Integer、Short、Long、Float、Double、Character、Boolean。

下面我們來看一個例子:

public class Test {
	
	public static void main(String[] args) {
		
		int a = 666;
		int b = 666;
		System.out.println(a == b);   // true
		
		Integer c = 666;
		Integer d = 666;
		System.out.println(c == d);   // false
	}
	
}

例子中變量a、b是基本數據類型,經過賦值操作之後變量a、b存放的都是值(666)。而對於比值操作a == b,所表達的含義應該是這樣的:666 == 666。所以打印結果爲true是合理的。

相對的,變量c、d是引用數據類型。將666賦值給變量c,變量c所存放的是666在內存中地址值(假設該地址值是15db9742),而變量d中所存放的則是另一個666在內存中的地址值(假設這個地址值是15db9747)。所以對於比值操作c == d,它所表達的含義是這樣的:15db9742 == 15db9747。顯然它們是不相等的,所以輸出的打印結果爲false。

具體可以參考下圖:

 

數組

8種基本數據類型中並不包含數組,換而言之,數組是一種引用數據類型。所以,一個數組類型變量存放的是地址值。

數組聲明

  • 一維數組

int[] arr;     // 標準的聲明格式

int arr[];     // 當然你也可以這樣聲明

  • 二維數組

int arr[][];    // 標準的聲明格式

int[] arr[];    // 聲明數組對[]的位置沒有強制要求,只要[]出現在類型之後即可

數組初始化

數組初始化有兩種方式:靜態初始化和動態初始化。

  • 靜態初始化

int[] arr = new int[] {1,2,3};

int[] arr = {1,2,3};    // 簡化的靜態初始化

  • 動態初始化

int[] arr = new int[3];

數組的靜態初始化需要提供元素的初始值(0~任意個)動態初始化則需要指定元素的個數(>=0)。需要注意的是,不要將靜態初始化和動態初始化混在一起使用。

 int[] arr = new int[3]{1,2,3};  // 錯誤的初始化

使用動態初始化創建數組實例,數組中的每個元素也被賦予了初始值,該初始值是元素數據類型的默認值初始值。不同類型數據的默認初始值見下表:

數據類型 默認值
byte,short,int,long 0
float,double 0.0
char 一個空字符,即 ‘\u0000’
boolean false
引用類型 null

數組一旦初始化完成,該數組的長度就被固定,無法再進行修改。

二維數組初始化

二維數組的初始化和一維數組略有不同,這個不同主要體現在動態初始化上。我們先來看二維數組是怎麼進行靜態初始化的:

int[][] arr = {{1,2,3}, {4,5,6}, {7,8,9}};

上面我們聲明瞭一個由3個等長的一維數組所組成的二維數組,這不難理解。接下來我們稍作修改:

int[][] arr = {{1,2,3}, {4,5}, {6}};

上面的二維數組所包含的每個一維數組的長度都不一樣。既然如此,那麼我們可以試着這樣來動態初始化二維數組:

int[][] arr = new int[3][];

上面聲明的二維數組是由3個不定長的一維數組所組成的,換而言之,這個二維數組中所包含的是三個尚未創建的一維數組,這樣一來,二維數組便有了極大的靈活性。

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