1. 程式人生 > 其它 >Java漫談6

Java漫談6

今天這篇想聊聊陣列。 在聊陣列之前先聊個別的,如果想在Java中實現一個 數字-月份 轉換,那我該怎麼做呢?就比如數字1代表了一月份,數字2代表了二月份…數字12代表了十二月份。 當然,我現在手裡的工具只有8大基本資料型別,如何構造類,流程控制語句。那麼我最先能想到的,也算是目前唯一能想到的就是用if控制語句來做逐個輸出。上一篇漫談中沒有提到 switch語句 ,當時真沒想起來,抱歉了,以後用一篇的時間單獨聊這個,所以這次我們就只聊 if 語句的方式。 如果用if來寫的話,示例如下:

public void trans(int i){    if(i==1){
        System.out.println("一月份");//輸出一月份
    }else if(i==2){
        System.out.println("二月份");//輸出二月份
    }
    ...    else if(i==12){
        System.out.println("十二月份");//輸出十二月份
    }
}

我們再來回顧一下這整個過程,輸入一個值i,判斷它是不是等於1,如果是的話就輸出,不是的話就判斷它是不是等於2,如果是的話,再輸出,不是的話再判斷是不是等於3,如果是的話……等等,它的判斷語句已經出現了重複,而且這種重複只需要同時改變輸入的值和其中的一個判斷因子,也就是說整個判斷的框架 i==m 這個框架是沒有變的。那既然它重複了,那能不能用迴圈來代替這樣的重複,也就是1-12個月。所以我可以把上面的方法改成for迴圈的,如下:

public void trans(int i){    
    for(int m=1; m<13; m++){        
        if(i==m){
            System.out.println(m + "月份");//輸出一月份
        }
    }
}

似乎這是一條路,但這樣一來,結果就變成了 1月份,2月份,……,12月份, 而這樣一來,與之前所說的純數字月份就不一樣了。 不過這次用的for迴圈倒是給了一個啟發,就是for迴圈中的迴圈次數,也就是這裡的m,它就像一個局外人一樣,告訴我們,迴圈進行到了第幾次了。如果我們能把月份的具體名稱放到一間“教室”裡面,並有序的排上坐,也就是我點名是說一號桌的時候,一月份會跳出來說聲“到,我是一月份”,那麼這樣一來問題就會被解決。Java中與之對應的充當這個角色的就是陣列,它就是一個能裝同一類的物件的一個數據組。陣列本身還自帶一個長度值,並且每一個元素也會自帶一個下標,用於表示自己在陣列中的位置。而我們就可以利用這個特性來改造上面的方法。

public void trans(int i){
    String strM = ["一月份", "二月份", "三月份", "四月份", "五月份", "六月份", "七月份", "八月份", "九月份", "十月份", "十一月份", "十二月份"];    for(int m=1; m<13; m++){        if(i==m){
            System.out.println(strM[m]);//輸出一月份
        }
    }
}

再進一步,如果說 strM[m] 能達到效果,那也就是說 strM[i] 也能得到效果。那這樣一來用陣列下標能快速定位這一特點,就能在不用for迴圈的情況下得到值。如下:

public void trans(int i){
    String strM = ["一月份", "二月份", "三月份", "四月份", "五月份", "六月份", "七月份", "八月份", "九月份", "十月份", "十一月份", "十二月份"];
    System.out.println(strM[i]);
}

陣列的下標是陣列的一個很常用的功能,今天我們通過月份轉換的例子聊到了這個陣列的功能,而在最後的方法中構造陣列時,我使用的是陣列的三大構造方法之一的一步到位構造法,其它還有空殼法 String strM[] = new String[]{}, 定義框架法 String strM[] = new String[5]。 希望能使你對陣列的下標功能有個新角度的認識,咱們下回見。