1. 程式人生 > >三、流程控制和陣列

三、流程控制和陣列

1、switch語句

Java增強了switch語句的功能,允許switch語句的控制表示式是java.lang.String型別的變數或表示式,不能是StringBuffer或者StringBuilder這兩種字串型別。
總結:switch語句後的表示式資料型別只能是byte、short、char、int四種整數型別,String和列舉型別。

2、控制迴圈結構

(1)break語句不僅可以結束其所在的迴圈,還可以直接結束其外層迴圈。此時需要在break後面緊跟一個標籤,這個標籤用於標識一個外層迴圈。

public class BreakTest
{
	public static void main(String[] args)
	{
		outer://外層標籤
		for(int i = 0;i < 5;++i)
		{
			for(int j = 0;j < 3;++j)
			{
				if(j == 1)
				{
					break outer;
				}
				System.out.println("i的值是:" + i + " j的值是:" + j);
			}
		}
	}
}

(2)continue後面也可以緊跟一個標籤,用於直接跳過標籤所標識迴圈的當次迴圈的剩下語句,重新開始下一次迴圈。

public class BreakTest
{
	public static void main(String[] args)
	{
		outer://外層標籤
		for(int i = 0;i < 5;++i)
		{
			for(int j = 0;j < 3;++j)
			{
				if(j == 1)
				{
					continue outer;
				}
				System.out.println("i的值是:" + i + " j的值是:" + j);
			}
		}
	}
}

j無法超過1,每當j == 1的時候就會結束外層迴圈的當次迴圈,直接開始下一次迴圈。內層迴圈沒有機會執行完成。

3、陣列型別

Java語言是面向物件的語言,而類和類之間可以支援繼承關係,這樣可能產生一個數組裡可以存放多種資料型別的假象。
(1)什麼是陣列型別?
陣列本身也是一種引用型別。它儲存著一個指標,指向陣列元素,陣列元素存放在堆中。
(2)如何定義陣列型別?
java中有兩種定義方式,一是type[] arrayName;二是 type arrayName[]。推薦使用第一種,要將arrayName當成一個變數。定義陣列的時候不能指定陣列的長度。
(3)陣列如何進行初始化?
1)靜態初始化

arrayName - new type[]{ele1, ele2, ele3,...};

此時的type可以和定義時的type相同,也可以是定義陣列時所指定的type的子類。

type[] arrayName = {ele1, ele2, ele3,...};

也可以定義的時候就進行初始化。
2)動態初始化

arrayName = new type[length];

動態初始化只會指定陣列的長度,由系統為每個陣列元素指定初始值。

type[] arrayName = new type[length];

同樣的定義的時候就進行初始化。
(4)陣列的使用
1)所有的陣列都有一個length的屬性,通過這個屬性可以得到陣列的長度。
2)foreach的使用
語法格式:

for(type var:array|collection)
{
	//var自動迭代訪問每一個元素
} 

foreach迴圈會自動遍歷陣列和集合的每個元素。foreach迴圈中的變數相當於一個臨時變數,系統會把陣列元素依次賦給這個臨時變數,因此不能通過這個臨時變數來修改陣列元素的值。
(5)多維陣列
雖然java中有支援多維陣列的語法,但從陣列底層的執行機制上來看並沒有多維陣列。
多維陣列的定義和初始化:

type[][] arrName;
arrName = new type[length][];//相當於定義了length個type[]型別的變數
//靜態初始化
String[][] str = new String[][]{new String[3], new String[]{"hello"}};

(6)陣列的常用方法
在java中有一個Arrays的工具類,包含了一些陣列常用的方法。