第四章.流程控制與數組
流程控制結構:
分支結構
根據分支條件來選擇性的執行某段代碼。
if:
switch:
case語句後面只能是byte、short、char、int四種整型類型,枚舉類型和Java.lang.String類型(從Java 7才允許)。
default語句不省略。
break:
break語句可以結束switch語句、while、do while、for語句但是結束不了if語句。
Java中海油一種break標簽,可以結束外層循環:
1 public class BreakTest2{ 2 public static void main(String[] args){View Code3 //外層循環,outer作為標識符 4 outer: 5 for(int i = 0; i < 5; i++){ 6 //內層循環 7 for(int j = 0; j < 3; j++){ 8 System.out.println("i的值為:" + i + " j的值為:" + j); 9 if(j == 1){ 10 //跳出outer標簽所標識的循環 11 breakouter; 12 } 13 } 14 } 15 } 16 }
記住:這個外層循環標簽是結束外層循環,不是跳到外層循環重新執行,切記!
break後的標簽必須是一個有效的標簽,即這個標簽必須在其所在循環的外層循環之前定義。
標簽和循環語句之間不要加任何語句。
continue:
用在for語句中。
循環結構
根據循環條件,重復執行某段代碼。
while:
do while:
for:
foreach(jdk 5):
數組類型:
java的數組要求所有的數組元素具有相同的數據元素,即一個數組中只能存儲一種數據類型的數據。
數組也是一種數據類型,它本身是一種引用類型:
int[] arrayName;//推薦使用這種
int arrayName[];
數組初始化:
靜態初始化:
int[] arrayName;
arrayName = new int[] {1, 2, 3, 4};
或者定義初始化同時完成:
int[] a = {5, 6, 7, 8};
動態初始化:
int[] arrayName = new int[5];
數組不要同時使用靜態初始化和動態初始化:
//錯誤的寫法,int[]是類型,中括號中不能有值。
//錯誤的寫法,不能同時使用靜態和動態初始化數組。
Java中各類型的默認值:
整型(byte,short,int,long):0
浮點型(float,double):0.0
字符型(char):‘\u0000’
布爾類型(boolean):false
引用類型(類,接口,數組):null
使用數組:
訪問數組元素:
若訪問數組元素時指定的索引值小於0,或者大於等於數組長度,編譯程序不會出現任何錯誤,但是運行時會出現異常:java.lang.ArrayIndexOutOfBoundsException:N
(數組索引越界異常),異常信息後的 N 就是程序員試圖訪問的數組索引。
所有數組都提供了一個length的屬性,可以防止越界訪問:
for(int i = 0; i < arrayName.length; i++)
foreach循環:
可以循環遍歷數組和集合,使用foreach循環遍歷數組和集合元素時,無需獲得數組和集合的長度,無需根據索引來訪問數組元素和集合元素,foreach循環自動遍歷數組和集合
每個元素:
1 public class ArrayTest{ 2 public static void main(String[] args){ 3 String[] books = {"瘋狂Java講義", "瘋狂Android講義"}; 4 for(String book : books){ 5 book = "瘋狂Ajax講義"; 6 System.out.println(book); 7 } 8 System.out.println(books[0]); 9 System.out.println(books[1]); 10 } 11 }View Code
想一想上面的輸出結果,並理解為什麽會有這樣的結果?
Java 8增強工具類:Arrays
Arrays類中包含了如下幾個Static修飾的方法。//類中靜態方法可以用 類名.方法名()調用。省去了創建對象的麻煩。
1.int binarySearch(type[] a, type key);//使用二分法查詢key元素在a數組中的索引值,若不包含key,則返回負數。a數組中元素已經按升序排列
2.int binarySearch(type[] a, int fromIndex, int to Index, type key);//使用二分法查詢key元素在a數組中的索引值,只搜索a數組中從fromIndex到toIndex索引的元素,若不
包含key,則返回負數。a數組中元素已經按升序排列
3.type[] copyOf(type[] original, int length);//把original數組復制成一個新數組,length是新數組的長度。若length小於original數組的長度,則新數組就是原數組前面length個
元素;若length大於original數組的長度,則新數組的前面元素就是原數組的所有元素,後面按java默認值補充。
4.type[] copyOfRange(type[] original, int from, int to);//和上面方法相似,但是只復制從from到to索引的元素。
5.boolean equals(type[] a, type[] a2);//若a數組和a2數組的長度相同,且兩者中元素也一一相同,該方法將返回true
6.void fill(type[] a, type val);//把a數組的所有元素都賦值為val
7.void fill(type[] a, int fromIndex, int toIndex, type val);//與上面方法類似,但是只將fromIndex到toIndex索引的元素賦值為val
8.void sort(type[] a);//對a數組的數組元素進行排序,為升序
9.void sort(type[] a, int fromIndex, int toIndex);//與上面方法相似,但是只將fromIndex到toIndex索引的元素排序,為升序
10.String toString(type[] a);//將一個數組轉換為字符串,若數組元素為0,1,2,3,4,則輸出為[0, 1, 2, 3, 4],前後有中括號,中間以逗號和空格間隔。
第四章.流程控制與數組