zoukankan      html  css  js  c++  java
  • 2018-2019-2 20189203 移动平台应用开发实践第四周学习总结

    第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( ) + " ");
    Thread.sleep(6000);//让当前线程休眠(阻塞)6秒,让出CPU的使用,给别的线程利用cpu的机会
    System.out.println(new Date( ) + " ");
    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文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。

  • 相关阅读:
    入门菜鸟
    FZU 1202
    XMU 1246
    Codeforces 294E Shaass the Great 树形dp
    Codeforces 773D Perishable Roads 最短路 (看题解)
    Codeforces 814E An unavoidable detour for home dp
    Codeforces 567E President and Roads 最短路 + tarjan求桥
    Codeforces 567F Mausoleum dp
    Codeforces 908G New Year and Original Order 数位dp
    Codeforces 813D Two Melodies dp
  • 原文地址:https://www.cnblogs.com/23du/p/10589533.html
Copyright © 2011-2022 走看看