2014年12月29日 星期一

JAVA7-課程4

    這次上課提早半小時出門,到達教室有充裕的時間可以醞釀一下上課的情緒(上課要醞釀什麼情緒阿 = =+)。總之,沉澱的心情較適合學習。
    今日所學:陣列、物件
    JAVA正規宣告陣列的方式與C語言完全不同,但後來也有加入一些宣告語法是仿C語言的。
※一維陣列的宣告:
    int[] k=new int[5];
    int k[]=new int[5];
    int[] k=new int[]{10,20,30,40,50};
    int k[]=new int[]{10,20,30,40,50};
    仿C
    int[] k={10,20,30,40,50};
    int k[]={10,20,30,40,50};

※二維陣列的宣告:
    int[][] k=new int[3][5];
    int[] k[]=new int[3][5];
    int k[][]=new int[3][5];
    int[][] k=new int[][]{{10,20,30,40,50},{60,70,80,90,100},{110,120,130,140,150}};
    int[] k[]=new int[][]{{10,20,30,40,50},{60,70,80,90,100},{110,120,130,140,150}};
    int k[][]=new int[][]{{10,20,30,40,50},{60,70,80,90,100},{110,120,130,140,150}};
    仿C
    int[][] k={{10,20,30,40,50},{60,70,80,90,100},{110,120,130,140,150}};
    int[] k[]={{10,20,30,40,50},{60,70,80,90,100},{110,120,130,140,150}};
    int k[][]={{10,20,30,40,50},{60,70,80,90,100},{110,120,130,140,150}};


※不規則陣列的宣告:
    int[][] c=new int[3][];
    int[] c[0]=new int[4];
    int[] c[1]=new int[2];
    int[] c[2]=new int[3];
    及其記憶體配置方式:

♠簡單陣列的用法:

    只有陣列可以使用的for迴圈
    for(資料型態 變數:陣列名稱){}

♠一個例子-使用陣列的好處:
    骰子骰6000次,紀錄各點數出現的次數
    不用switch,也可以紀錄。
    
    public static void main(String[] arg){}中,陣列也是可以使用的。當你在打執行指令時,後面打上資料就可以傳入了。例如:java test 12 20 36,則arg[0]="12"、arg[1]="20"、arg[2]="36"。傳入主程式的陣列是String型態,在做運算時,必須轉換。
♠轉換指令:

♠ 使用主程式陣列傳入:


  接下來是簡單「物件」的使用。靜態的method宣告後,使用的語法為:物件參考變數.方法
♠計算最大公因數:
♠簡單物件記憶體配置方式:
    當宣告為靜態(static)時,JVM載入靜態的class名稱至Global記憶體中產生一個相同名稱的變數,並在Heap區中new一塊記憶體放置靜態的變數和程式。
    (注意資料型態的一致性)
    ※當宣告為靜態變數和程式時,會自動載入至記憶體中

♠Java的全域變數與不是全域變數:
    當一個class中有靜態的變數(a)與不是靜態的變數(b)時,Java載入記憶體的方式不同。
    變數a在初始化時,JVM就自動載入記憶體中,如下圖藍色的部分,即可直接使用;但數變b,因為不是靜態的,所以要使用它必須new一塊記憶體,如下圖黑色的部分,才能使用。
    但因為new一塊記憶體,所以這個類別所有的變數與程式都會放在這一塊新記憶體中,當然a的數變也會存在;但這一塊新記憶體中的a依舊指向JVM已經載入的位址。
    ※當宣告為靜態的變數時,此變數為全域變數且為共享

兩個作業:

    作業(一):於2014-12-29完成
        用亂數產生50個學生成績,統計每10分為一階段的人數。
        輸出:(1)(2)必須對整齊
            (1) 0- 9分的人數:1人
                10-19分的人數: 4人
                20-29分的人數: 5人
                30-39分的人數: 1人
                40-49分的人數: 2人
                50-59分的人數: 7人
                60-69分的人數: 4人
                70-79分的人數: 13人
                80-89分的人數: 7人
                90-99分的人數: 4人
                 100  分的人數: 2人
            (2) 0-  9分的人數:*
                10-19分的人數: ****
                20-29分的人數: *****
                30-39分的人數: *
                40-49分的人數: **
                50-59分的人數: *******
                60-69分的人數: ****
                70-79分的人數: *************
                80-89分的人數: *******
                90-99分的人數: ****
                 100  分的人數: **

    作業(二):於2014-12-30完成
        使用主程式的陣列String[] arg。
        public static void main(String[] arg){}
        輸入數個數字,挑出最大值與最小值。挑出最大值與最小值的程式必須寫成class。
後記:
    1.總算學到物件了!靜態物件的宣告方式、記憶體配置方式等.....。使用物件方法的語法:物件參考變數.方法
    2.物件導向 都是談論 非靜態的使用方式,下節課的內容。
    3.好想要趕快學到:如何從記事本、word、excel等...存放資料的地方載入到程式中使用,並將想要存儲的資料使用這些軟體儲存起來。
    4.彰化火車站附近有一家爌肉飯,今天去吃居然沒有蛤仔湯、蚵仔湯。一碗30元,但蛤仔湯的蛤仔好多,超好吃!

沒有留言:

張貼留言