zoukankan      html  css  js  c++  java
  • jdk1.5新特性

    1、增强for循环

    引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterable接口的集合类

    for(变量类型  变量 :需要迭代的数组或者集合){
    }

    增强for循环要注意的细节:

          1. 迭代器可以对遍历的元素进行操作,使用增强for循环时,不能对集合中的元素进行操作的。

          2. 增加for循环与普通的for循环区别。

          3. map的遍历。

    2、可变参数

    public static int sum2(int... numbers) {
            if (numbers == null) {
                System.out.println("可变参数的值为null");
                return 0;
            }
    
            if (numbers.length == 0) {
                System.out.println("可变参数的值的长度为0");
                return 0;
            }
    
            int sum = 0;
            for (int num : numbers) {
                sum += num;
            }
            return sum;
        }

    可变参数的细节

    声明:

           在一个方法中,最多只能有一个可变参数。

           可变参数只能放在参数列表的最后面。

        调用:

           当使用可变参数时,可以传0或多个参数。

           当使用可变参数时,也可以传一个数组进去,就表示多个参数。

        使用:

           在方法内部使用时,就是在使用一个数组。

           当调用时没有传参数时(传了0个),这时在方法内部的参数数组是有值的(不为null),但长度为0.

    3、自动装箱、拆箱

    自动装箱:指开发人员可以把一个基本数据类型直接赋给对应的包装类。

    自动拆箱:指开发人员可以把一个包装类对象直接赋给对应的基本数据类型。

    典型应用:

    List list = new ArrayList();
    
        list.add(1);
    
        //list.add(new Integer(1));
    
        int i=list.get(0);
    
        //int j = (Integer)list.get(0);

    4、枚举类

    一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。

    例如: 交通灯(红、黄、绿)    性别(男、女)   星期(星期一、二、三…..)

         分数等级(A、B、C、D、E)

    JDK 5新增的 enum 关键字用于定义一个枚举类。

    枚举的实现

    使用enum定义枚举类

    在枚举类中定义枚举值(大写)

    enum Gender {
        MALE, FEMALE;
    }

    发现其中每一个枚举值都是枚举类的具体实例对象.只不过是静态常量.

    枚举类具有如下特性:

    枚举类也是一种特殊形式的Java类。

    枚举类中声明的每一个枚举值代表枚举类的一个实例对象。

    与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数.

    public class Demo1 {
        public static void main(String[] args) {
            Gender male = Gender.MALE;
            System.out.println(male.getInfo());
        }
    }
    
    enum Gender {
        MALE("男"), FEMALE;
    
        // 成员变量,private
        private String info;
    
        // 构造函数,是private
        private Gender() {
    
        }
    
        private Gender(String info) {
            this.info = info;
        }
    
        // 成员方法
        public String getInfo() {
            return info;
        }
    }

    枚举类可以声明抽象方法,但是要有具体的枚举值去实现.

    public class Demo1 {
        public static void main(String[] args) {
            Gender male = Gender.MALE;
            System.out.println(male.getInfo());
            male.speak();
        }
    }
    
    enum Gender {
        MALE("男") {
            @Override
            public void speak() {
                System.out.println("是男人");
            }
        },
        FEMALE {
            @Override
            public void speak() {
                System.out.println("是女人");
            }
        };
    
        // 成员变量
        private String info;
    
        // 构造函数
        private Gender() {
    
        }
    
        private Gender(String info) {
            this.info = info;
        }
    
        // 成员方法
        public String getInfo() {
            return info;
        }
    
        public abstract void speak();
    
    }

    枚举类也可以实现接口(序列化)、或继承抽象类。

    JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型(enum)。

    public class Demo2 {
        public static void main(String[] args) {
            WeekDay mon = WeekDay.MON;
            switch (mon) {
            case MON:
                System.out.println("星期一要上班...");
                break;
            case TUE:
                System.out.println("星期二,继续上班...");
                break;
            }
        }
    }
    
    enum WeekDay {
        MON, TUE, WED, THU, FRI, SAT, SUN;
    }

    若枚举类只有一个枚举值,则可以当作单态设计模式使用。

    练习:

    请编写一个关于星期几的枚举WeekDay,要求:枚举值:Mon,Tue,Wed,Thu,Fri,Sat,Sun 该枚举要有一个方法,调用该方法返回中文格式的星期。

    enum WeekDay {
        MON {
    
            @Override
            public String getInfo() {
    
                return "星期一";
            }
    
        },
        TUE {
            @Override
            public String getInfo() {
    
                return "星期二";
            }
        },
        WED {
            @Override
            public String getInfo() {
    
                return "星期三";
            }
        },
        THU {
            @Override
            public String getInfo() {
    
                return "星期四";
            }
        },
        FRI {
            @Override
            public String getInfo() {
    
                return "星期五";
            }
        },
        SAT {
            @Override
            public String getInfo() {
    
                return "星期六";
            }
        },
        SUN {
            @Override
            public String getInfo() {
    
                return "星期天";
            }
        };
    
        public abstract String getInfo();
    }
  • 相关阅读:
    基于element-ui图片封装组件
    计算时间间隔具体每一天
    C语言学习笔记 —— 函数作为参数
    AtCoder Beginner Contest 049 题解
    AtCoder Beginner Contest 048 题解
    AtCoder Beginner Contest 047 题解
    AtCoder Beginner Contest 046 题解
    AtCoder Beginner Contest 045 题解
    AtCoder Beginner Contest 044 题解
    AtCoder Beginner Contest 043 题解
  • 原文地址:https://www.cnblogs.com/h-g-f-s123/p/6058561.html
Copyright © 2011-2022 走看看