1. 程式人生 > >2018-2019-2 20189203 移動平臺應用開發實踐第四周學習總結

2018-2019-2 20189203 移動平臺應用開發實踐第四周學習總結

nta 測試 區別 構造函數 類型參數 一句話 操作 get lee

第12、13、14、15章學習

第12章 枚舉

  • 一、常量
    在JDK1.5 之前,我們定義常量都是: public static final.... 。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型裏,而且枚舉提供了比常量更多的方法。
    Java代碼
    public enum Color {  
      RED, GREEN, BLANK, YELLOW  
    } 
  • 二、switch

JDK1.6之前的switch語句只支持int,char,enum類型,使用枚舉,能讓我們的代碼可讀性更強。

Java代碼

    enum Signal {   

        GREEN, YELLOW, RED  

}

    public class TrafficLight {  

        Signal color = Signal.RED;  

        public void change() {  

            switch (color) {  

            case RED:  

                color = Signal.GREEN;  

                break;  

            case YELLOW:  

                color = Signal.RED;  

                break;  

            case GREEN:  

                color = Signal.YELLOW;  

                break;  

            }  

        }  

    }  
  • 三、向枚舉中添加新方法

如果打算自定義自己的方法,那麽必須在enum實例序列的最後添加一個分號。而且 Java 要求必須先定義 enum 實例。

Java代碼

    public enum Color {  

        RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);  

        // 成員變量  

        private String name;  

        private int index;  

        // 構造方法  

        private Color(String name, int index) {  

            this.name = name;  

            this.index = index;  

        }  

        // 普通方法  

        public static String getName(int index) {  

            for (Color c : Color.values()) {  

                if (c.getIndex() == index) {  

                    return c.name;  

                }  

            }  

            return null;  

        }  

        // get set 方法  

        public String getName() {  

            return name;  

        }  

        public void setName(String name) {  

            this.name = name;  

        }  

        public int getIndex() {  

            return index;  

        }  

        public void setIndex(int index) {  

            this.index = index;  

        }  

    }  
  • 四、覆蓋枚舉的方法
    下面給出一個toString()方法覆蓋的例子。
    Java代碼
    public enum Color {  
        RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);  
        // 成員變量  
        private String name;  
        private int index;  
        // 構造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
        //覆蓋方法  
        @Override  
        public String toString() {  
            return this.index+"_"+this.name;  
        }  
    }  
  • 五、實現接口

所有的枚舉都繼承自java.lang.Enum類。由於Java 不支持多繼承,所以枚舉對象不能再繼承其他類。
Java代碼

    public interface Behaviour {  
        void print();  
        String getInfo();  
    }  
    public enum Color implements Behaviour{  
        RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);  
        // 成員變量  
        private String name;  
        private int index;  
        // 構造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
    //接口方法  
        @Override  
        public String getInfo() {  
            return this.name;  
        }  
        //接口方法  
        @Override  
        public void print() {  
            System.out.println(this.index+":"+this.name);  
        }  
    }  
  • 六、使用接口組織枚舉

Java代碼

    public interface Food {  
        enum Coffee implements Food{  
            BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
        }  
        enum Dessert implements Food{  
            FRUIT, CAKE, GELATO  
        }  
    }  

        /**
         * 測試繼承接口的枚舉的使用(by 大師兄 or 大濕胸。)
         */
        private static void testImplementsInterface() {
            for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {
                System.out.print(dessertEnum + "  ");
            }
            System.out.println();
            //我這地方這麽寫,是因為我在自己測試的時候,把這個coffee單獨到一個文件去實現那個food接口,而不是在那個接口的內部。
            for (CoffeeEnum coffee : CoffeeEnum.values()) {
                System.out.print(coffee + "  ");
            }
            System.out.println();
            //搞個實現接口,來組織枚舉,簡單講,就是分類吧。如果大量使用枚舉的話,這麽幹,在寫代碼的時候,就很方便調用啦。
            //還有就是個“多態”的功能吧,
            Food food = Food.DessertEnum.CAKE;
            System.out.println(food);
            food = CoffeeEnum.BLACK_COFFEE;
            System.out.println(food);
        }
  • 七、關於枚舉集合的使用

java.util.EnumSet和java.util.EnumMap是兩個枚舉集合。EnumSet保證集合中的元素不重復;EnumMap中的 key是enum類型,而value則可以是任意類型。關於這個兩個集合的使用就不在這裏贅述,可以參考JDK文檔。

第13章 操作日期和時間

java.util提供了Date類來封裝日期和時間。實例化Date類的兩個構造函數,
Date();--當前時間
Date(long millisec);--距離格林威治時間1970年1月1日millisec毫秒的時間
使用SimpleDateFormat格式化日期
```
import java.util.;
import java.text.
;

public class DateDemo {
public static void main(String args[]) {

  Date now = new Date( );
  SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

  System.out.println("Current Date: " + ft.format(now));
//Current Date: 火 2016.11.01 at 01:37:56 午後 CST

} }

使用printf格式化日期
printf方法可以很輕松地格式化時間和日期。使用兩個字母格式,它以t開頭並且以下面轉換字符表格中的一個字母結尾。例如:

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {
// 初始化 Date 對象
Date date = new Date();

   // 使用toString()顯示日期和時間
   System.out.printf("%1$s %2$tB %2$td, %2$tY",  "Due date:", date);
   //Due date: 11月 01, 2016       

}
}測量時間 結束時間-開始時間=用時。System.currentTimeMillis();--取得系統當前時間秒數。
import java.util.*;

public class TestDataFormat {

public static void main(String args[]) {
try {
long start = System.currentTimeMillis( );
System.out.println(new Date( ) + "\n");
Thread.sleep(6000);//讓當前線程休眠(阻塞)6秒,讓出CPU的使用,給別的線程利用cpu的機會
System.out.println(new Date( ) + "\n");
long end = System.currentTimeMillis( );
long diff = end - start;
System.out.println("Difference is : " + diff);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}```
Calendar類
創建一個Canlendar對象---
Calendar c = Calendar.getInstance();//默認是當前日期
創建一個指定日期的Canlendar對象
Calendar c1= new Calendar.getIntance();
c1.set(2016,11,01);//20161101

第14章 集合框架

Java中的集合框架大類可分為Collection和Map;兩者的區別:
1、Collection是單列集合;Map是雙列集合
2、Collection中只有Set系列要求元素唯一;Map中鍵需要唯一,值可以重復
3、Collection的數據結構是針對元素的;Map的數據結構是針對鍵的。
Collection體系:

collection包括兩大體系,List和Set

List的特點:

存取有序,有索引,可以根據索引來進行取值,元素可以重復

Set的特點:

存取無序,元素不可以重復

Set:
Set集合的特點:元素不重復,存取無序,無下標
Set集合下面有:HashSet,LinkedHashSet,TreeSet

第15章 泛型

泛型,即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然後調用此方法時傳遞實參。那麽參數化類型怎麽理解呢?顧名思義,就是將類型由原來的具體的類型參數化,類似於方法中的變量參數,此時類型也定義成參數形式(可以稱之為類型形參),然後在使用/調用時傳入具體的類型(類型實參)。
在使用泛型類時,雖然傳入了不同的泛型實參,但並沒有真正意義上生成不同的類型,傳入不同泛型實參的泛型類在內存上只有一個,即還是原來的最基本的類型,當然,在邏輯上我們可以理解成多個不同的泛型類型。究其原因,在於Java中的泛型這一概念提出的目的,導致其只是作用於代碼編譯階段,在編譯過程中,對於正確檢驗泛型結果後,會將泛型的相關信息擦出,也就是說,成功編譯過後的class文件中是不包含任何泛型信息的。泛型信息不會進入到運行時階段。對此總結成一句話:泛型類型在邏輯上看以看成是多個不同的類型,實際上都是相同的基本類型。

2018-2019-2 20189203 移動平臺應用開發實踐第四周學習總結