时间:2016-11-5 12:03

JDK5.0新特性
    泛型、枚举、静态导入、自动拆装箱、增强for循环、可变参数

1、Junit单元测试
    测试的对象是类中的一个方法。
    junit不属于JavaSE,要想使用需要导入相应的jar包。

    首先junit有不同的版本。

    单元测试方法命名规则:
        必须是public
        不能有返回值
        不能有参数

    运行测试方法时,需要在方法上面加上一个注释:
        @Test    //表示这是一个测试方法
        @Ignore    //表示该方法不进行单元测试
        @Before    //在每一个单元测试方法之前运行(如果有多个测试方法,都会先执行该方法)
        @After    //在每一个单元测试方法之后运行(如果有多个测试方法,都会后执行该方法)

    //测试方法
    @Test
    public void test01()
    {
        JunitDemo test = new JunitDemo();
        test.test01(2, 3);
    }

    当出现绿色条时,表示方法测试成功。
    当出现红色条时,表示方法测试失败。 

要想运行单个测试方法,需要选中方法名之后再运行。

    断言:
        Assert.assertEquals(expected, actual);
            expected:测试期望值
            actual:方法运行的实际值
        当期望值和实际值相同,则单元测试通过,否则失败。

2、泛型
    在JDK5.0以前,对象保存到集合中就会失去其特性,取出时需要程序员手动进行类型的强制转换,这样不可避免会引发程序的一系列安全性问题。

    泛型擦除:
        泛型只是出现在源代码阶段,当源代码编译之后,泛型就不存在了。

    定义泛型类实现数组倒置:

public class EnumDemo {
    public static void main(String[] args)
    {
        Short arr[] = {1,2,3,4,5,6};
        System.out.println("颠倒前:");
        for(int i : arr)
        {
            System.out.print(i + "\t");
        }
        arr = new Demo<Short>().reverse(arr);
        System.out.println("\n颠倒后:");
        for(int i : arr)
        {
            System.out.print(i + "\t");
        }
    }
}
class Demo<T>
{
    public T[] reverse(T [] arr){
        for(int i = 0, j = arr.length-1; i < arr.length/2; i++, j--)
        {
            T temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        return arr;
    }
}

3、枚举

    什么是枚举?
        只能在一定的范围内取值,这个值只能是范围内的任意一个值。
        例如周一到周日。

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

    JDK5.0新增的enum关键字用于定义一个枚举类:
        enum Week {

            Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
        }

    枚举类案例:
        有参构造方法枚举类型
            需要在每个实例上都写上参数:Week(String s) {}   →   Sunday("")
        带有抽象方法的枚举类型举例
            在枚举的每个实例中都要重写这个抽象方法。

    练习:
        编写一个关于星期几的枚举类(Week),要求:
            枚举值:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
            该枚举类有一个方法,调用该方法返回中文格式的星期数。 

4、枚举API
     String  name()
        返回枚举的名称。
    int  ordinal()
        返回枚举的下标,下标从0开始。
    static Enum  valueOf(Class enumType, String name)
        返回枚举的对象。 

    自定义的枚举类,在编译阶段自动生成两个方法:
        Enum  valueof(String name)
            获取枚举对象。
        Enum[]  values()
            获得所有枚举对象的数组。

5、静态导入
    可以在代码中,直接使用静态导入方式,导入静态方法或者常量。

6、自动拆装箱
    装箱:
        把基本的数据类型转换成包装类。
    拆箱:
        把包装类转换成基本的数据类型。
    自动装箱:
        Integer i = 10;
    自动拆箱:
        int j = i;

    public static void main(String[] args)
    {
        method(1);
    }
    public static void method(int i)
    {
        System.out.println("int");    //输出int,JDK的向下兼容特性。
    }
    public static void method(Integer i)
    {
        System.out.println("Integer");
    }

7、增强for循环
    引入增强for循环的原因:替代Iterator
    for/in语句的适用范围:
        遍历数组
        遍历实现Iterable接口的集合类

    增强for循环底层实现也是迭代器,可以通过class文件查看。

8、可变参数

    如果说实现的多个方法,这些方法中逻辑基本相同,唯一不同的是传递参数的个数,那么可以使用可变参数。

     可变参数应用场景:
        实现两个数的相加,再实现三个数的相加,再实现四个数的相加.......

public class EnumDemo {
    public static void main(String[] args)
    {
        add(1,2);
        add(1,2,3);
        add(1,2,3,4);
    }
    public static void add(int...arguments)
    {
        //arguments可以理解为一个数组,这个数组用于存储传递的参数,相当于JS中的arguments
        int sum = 0;
        for(int i = 0; i < arguments.length; i++)
        {
            sum += arguments[i];
        }
        System.out.println(sum);
    }
}

注意:
        (1)可变参数需要写在方法的参数列表中,不能单独定义。
        (2)在方法的参数列表中只能有一个可变参数。
        (3)如果有其他参数,则可变参数必须放在参数列表的最后。

JDK 5.0新特性的更多相关文章

  1. JDK5.0新特性 (Day_07)

      JDK5.0新特性   目录 静态导入 自动装箱/拆箱 for-each循环 可变参数 枚举 JDK 5.0 新特性简介 JDK 5.0 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括 ...

  2. JDK5.0新特性1

    目录 静态导入 自动装箱/拆箱 for-each循环 可变参数 枚举 JDK 5.0 新特性简介 JDK 5.0 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括: 静态导入 自动装箱/拆箱 ...

  3. Java基础和JDK5.0新特性

    Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...

  4. atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性

    atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性   1.1. Servlet和JSP规范版本对应关系:1 1.2. Servlet2 ...

  5. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  6. Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解

    1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...

  7. Day07 jdk5.0新特性&Junit&反射

    day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装M ...

  8. Hadoop3.0新特性

    1. Hadoop3.0简介 Hadoop 2.0是基于JDK 1.7开发的,而JDK 1.7在2015年4月已停止更新,这直接迫使Hadoop社区基于JDK1.8重新发布一个新的Hadoop版本,而 ...

  9. Java JDK5.0新特性

    JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, co ...

随机推荐

  1. 【LeetCode】1207. 独一无二的出现次数

    1207. 独一无二的出现次数 知识点:set:哈希表 题目描述 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数. 如果每个数的出现次数都是独一无二的,就返回 true:否则返回 fal ...

  2. yaml 文件解析

    前言 yaml文件其实也是一种配置文件类型,相比较ini,conf配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据,不会改变原有数据类型,所有的数据类型在读取时都会原样输出,yam ...

  3. mybatis介绍以及配置

    一.概念 1.作用:简化dao层,是框架的一部分,常叫SSM,或SSI 2.历史:之前的版本叫ibatis,三版之后叫mybatis 3.什么是orm?object,relational,mappin ...

  4. 什么是BI工具,好用的BI工具软件排名

    目录 一.什么是BI工具? 二.BI工具有什么好处? 三.BI工具软件排名 由于海量数据对各种规模的企业构成挑战,因此每年确保所有业务流程都在控制之下变得越来越困难.最终,组织和公司在做出可持续和有利 ...

  5. Python 数值中的下划线是怎么回事?

    花下猫语:Python 中下划线的用法令人叹为观止,相信你已在各种文章或教程中见识过了.在 2016 年的 3.6 版本之后,Python 还引入了一种新的语法,使得下划线也可以出现在数值中.这篇翻译 ...

  6. Error: Could not find or load main class ***

    jni 本地方法的总结 1,第一步,javah D:\wksp_study\designbook\target\classes> //clas文件所在目录执行 javah -cp D:\wksp ...

  7. 阿里云IoT初试

    本文从概念到实战,以一个假想产品--"电子货架标签"(Electronic Shelf Label,以下简称ESL)为例,介绍基于阿里云IoT的物联网应用开发. 数据交互流程 以云 ...

  8. 大数据学习(10)—— Hive进阶

    前面提到了Hive的知识点非常零散,我不知道该怎么把这些知识点分类,跟SQL关系没那么大的就放在这一篇吧. Hive Serde 参考Hive Serde Serde是啥 Serde是序列化和反序列化 ...

  9. WebRTC 用例和性能

    WebRTC 用例和性能 实现低延迟.点对点传输是一项艰巨的工程挑战:有 NAT 遍历和连接检查.信令.安全.拥塞控制和无数其他细节需要处理.WebRTC 代表我们处理以上所有内容,这就是为什么它可以 ...

  10. 自学linux——15.云主机的购买流程及域名的购买备案解析

    项目上线流程 一.服务器选配购买 项目上线的服务器必须是外网服务器 1.服务器购买情况 真实服务器(成本过高,购买内部自用) 云服务器(上线首选):阿里云,腾讯云,华为云 2.购买阿里云服务器:htt ...