JDK各个版本的新特性:

jdk5:
    1.自动拆、装箱
        int -->Integer
        double --> Double
        long --> Long
        char --> Character
        float --> Float
        boolean --> Boolean
        short --> Short
        byte -- > Byte

    2.枚举
        public enum MyEnum{
            RED,GREEN,YELLOW
        }

    3.for-each遍历
        只有实现了iterator接口的集合类。

    4.泛型
        意味着编写的代码可以被不同类型的对象所重用。 可见泛型的提出是为了编写重用性更好的代码。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

    5.静态导入
        可以将类中的一些变量、方法以import static的方式将其导入,使被导入类的静态变量和方法于当前类可见,使用无需再给出全类名。

    6.变长参数
        public void printColor(String... colors){
            // do something
        }

    7.线程并发库
        JUC并发包 java.util.concurrent
        线程互斥工具类:Lock,ReadWriteLock
        线程通信:Condition
        线程池:ExecutorService
        同步队列:ArrayBlockingQueue
        同步集合:ConcurrentHashMap,CopyOnWriteArrayList
        线程同步工具:Semaphore


JDK6:
    1.CompilerApi
    2.Consile
        java.io.Console
    3.Desktop类和SystemTray类
    4.轻量级Http Server API
    5.对脚本语言的支持
        如ruby,groovy,javascript。

JDK7:
    1.捕获多异常
        public static void first(){   
            try {   
                BufferedReader reader = new BufferedReader(new FileReader(""));   
                Connection con = null;   
                Statement stmt = con.createStatement();   
            } catch (IOException | SQLException e) {   
                //捕获多个异常,e就是final类型的   
                e.printStackTrace();   
            }   
        } 

    2.数字变量对下划线的支持
        int num = 1234_5678_9; 
        float num2 = 222_33F; 
        long num3 = 123_000_111L;

    3.switch对String的支持
        String status = "orderState";     
        switch (status) {   
            case "ordercancel":   
                System.out.println("订单取消");   
                break;   
            case "orderSuccess":   
                System.out.println("预订成功");   
                break;   
            default:   
                System.out.println("状态未知");   
        }  

    4.try-with-resource
        是一个定义了一个或多个资源的 try 声明,这个资源是指程序处理完它之后需要关闭它的对象。确保每一个资源在处理完成后都会被关闭。
        public static String readFirstLineFromFile(String path) throws IOException {   
            try (BufferedReader br = new BufferedReader(new FileReader(path))) {   
                return br.readLine();   
            }   
        }   

    5.创建泛型时类型推断
        List<String> list = new ArrayList<String>(); 
        可变为
        List<String> list = new ArrayList<>();

JDK8:
    1.Base64
        对 Base64 编码的支持已经被加入到Java 8官方库中,这样不需要使用第三方库就可以进行Base64编码

    2.新的日期时间api
        Date-Time API(JSR 310);

    3.lambda表达式(闭包)
        最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成。
        public class Lambda {
            public static void main(String[] args) {
                Arrays.asList("a", "b", "d").forEach(System.out::println);
            }
        }

    4.函数式接口
        新的注解FunctionalInterface用来标注这是一个函数式接口。会使编译器在编译器检测接口是否只有一个抽象方法配合lambda表达式使用。

    5.Optional
        最常见的bug就是空值异常,在Java 8之前,Google Guava引入了 Optionals 类来解决 NullPointerException;

        如果Optional实例持有一个非空值,则 isPresent() 方法返回true,否则返回false;orElseGet() 方法,Optional实例持有null, 则可以接受一个lambda表达式生成的默认值;map()方法可以将现有的 Optional 实例的值转换成新的值;orElse()方法与orElseGet()方法类似, 但是在持有null的时候返回传入的默认值。

    6.Streams
        新增的Stream API(java.util.stream)将生成环境的函数式编程引入了Java库中。
        final Collection<Task> tasks = Arrays.asList(
                new Task(Status.OPEN, 5),
                new Task(Status.OPEN, 13),
                new Task(Status.CLOSED, 8)
        );

        // Calculate total points of all active tasks using sum()
        final long totalPointsOfOpenTasks = tasks
                .stream()
                .filter(task -> task.getStatus() == Status.OPEN)
                .mapToInt(Task::getPoints)
                .sum();

        System.out.println("Total points: " + totalPointsOfOpenTasks);

    7.更好的类型推断
        Value.defaultValue()

    8.并行数组
        Arrays.parallelSort可以在多核情况下显著提高对数组排序的效率。

    9.Nashron引擎
        提供了nashron引擎可以在Java代码中直接编写js代码执行。

    10.接口的默认方法和静态方法
        给java.util.Collection接口添加新方法,如stream()、parallelStream()、forEach()和removeIf()等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值