1. 程式人生 > >第四章.流程控制與數組

第四章.流程控制與數組

lean mage .cn nal ati alt 什麽 lan int

流程控制結構:

分支結構

  根據分支條件來選擇性的執行某段代碼。

  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){
3 //外層循環,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 break
outer; 12 } 13 } 14 } 15 } 16 }
View Code

    記住:這個外層循環標簽是結束外層循環,不是跳到外層循環重新執行,切記! 

    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],前後有中括號,中間以逗號和空格間隔。

第四章.流程控制與數組