JDK 8新特性简单概述

JDK8的新特性

  • Lambda表达式

    Lambda表达式是JDK8中最重要的特性之一。它引入了一种新的语法,用于java中编写匿名函数,使得代码更加简洁,清晰。Lambda表达式通常用于简化集合的操作,如过滤,排序和映射等。

    示例代码:

    //使用Lambda表达式对一个列表进行排序
    List <String> list = Arrays.asList("b","a","c");
    Collections.sort(list,(s1,s2) -> s1.compareTo(s2));
    

    Lambda表达式(s1,s2) -> s1.compraeTo(s2)是一个简洁的方式来实现Comparator接口。

  • 函数式接口(Functional Interfaces)

    函数式接口是只有一个抽象方法的接口。JDK8提供了一些常用的函数式接口,如java.util.function包中的Function,Predicate,Consumer等。这些接口可以和Lambda表达式一起使用,可以极大简化代码。

    示例代码:

    @FunctionalInterface
    interface MyFunctionalInterface{
        void myMethod();
    }
    MyFunctionalInterface myFunc = () ->System.out.println("Hello,World");
    myFunc.myMethod();
    
  • Stream API

    Stream API是JDK 8中的另一个重大更新,它允许你以声明性方式处理数据集合。Stream支持串行和并行的聚合操作,如过滤,映射,规约等。

    示例代码:

    List<Interger> number = Arrays.asList(1,2,3,4,5);
    List<Interger> evenNumbers = number.stream()
        							   .filter(n -> n%2)
        							   .collect(Collectors.toList());
    

    上述代码中,filter方法用于过滤出所有的偶数,collect方法将结果收集为一个列表。

  • 默认方法(Default Methods)

    在接口中引了默认方法,允许接口提供具体实现。这使得在不破坏现有实现的情况下,可以为接口添加新方法。

    示例代码:

    interface MyInterface{
        void existingMethod();
        
        default void newMethod(){
            System.out.println("This is a default method.");
        }
    }
    
    class MyClass implement MyInterface{
        public void existingMethod(){
            Systme.out.println("Existing implemetation.");
        }
    }
    
    MyClass myClass = new MyClass();
    myClass.newMethod();//输出:This is a defult method.
    
  • Optional类

    Optional是一个容器,表示可能包含也可能不包含非空值。这可以有效避免NullPointerException

    示例代码:

    Optional<String> optional = Optional.ofNullable("Hello");
    optional.ifPresent(System.out::println);
    
  • 新日期和时间API

    JDK8 引入了全新的日期和时间API(java.time包),提供了更好的日期和时间处理功能。新的API更加直观和容易使用,同时避免了老版API中的缺陷。

    示例代码:

    LocalDate today = LocalDate.now();
    LocalDate birthDate = LocalDate.of(1990,Month.JANUARY,1);
    Period age = Period.between(birthDate,today);
    System.out.println("Age: " + age.getYears());
    
  • Nashorn JavaScript引擎

    JDK 8引入了一个新的javaScript引擎,名为Nashorn,它允许在JVM上运行javaScript代码。

    示例代码:

    ScriptEngineManager manger = new ScriptEngineManger();
    ScriptEngine engine = manger.gerEngineByName("nashor");
    engine.eval("print('Hello from JavaScript')")
  • 并发增强(Concurrent Enhancements)

    JDK 8对并发API进行了增强,引入了如CompletableFuture类,用于编写异步程序,简化了线程的管理和异步操作。

    示例代码:

    CompletableFnture.supplyAsync(() -> "Hello")
        			 .thenApply(result -> result + "World")
        		     .thenAccept(System.out::println);
    
  • Base64编码:

    JDK 8在java.util包中提供了对Base64编码的支持,简化了对字符串的字节数组的编码和解码操作。

    示例代码:

    String encoded=Base64.getEncoder().encodeToString("Hello".getBytes());
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值