JDK1.8新特性

  1. JDK1.8新特性(stream、lambda表达式、接口default方法)

    答:Java8(又称JKD1.8)是Java语言开发的一个主要版本。Oracle 公司于2014年3月18日发布 Java 8 。

    企业开发一般选择的是最稳定的版本而不是最新的,所以JDK1.8目前在企业中应用的非常多,问到这类问题也就不奇怪了!
    新增特性:
    (1)支持Lambda表达式
    (2)函数式接口
    (3)新的Stream API
    (4)新的日期
    (5)API其他特性
    下面进行详细介绍:

    (1)支持Lambda表达式

    Lambda引入了新的操作符:->(箭头操作符),->将表达式分成两部分。左侧:(参数1,参数2-…)表示参数列表。右侧:0内部是方法体。
    注意事项:

  • 形参列表的数据类型会自动推断。如果形参列表为空,只需保留()。
  • 如果形参只有1个,()可以省略,只需要参数的名称即可。
  • 如果执行语句只有一句,且无返回值,}可以省略,若有返回值,则若想省去{},则必须同时省略return,且执行语句也保证只有一句。
  • Lambda不会生成一个单独的内部类文件

例子1:线程创建的Lambda表达式使用

/**
* Lambda表达式的使用
* 例子1:线程的创建
*/
public class Demo1 {
   
   public static void main(String[] args) {
   
       //匿名内部类的方式
       Runnable runnable = new Runnable() {
   
           @Override
           public void run() {
   
               System.out.println("子线程1执行了~");
           }
       };
       //Lambda表达式
       Runnable runnable1 = ()->{
   
           System.out.println("子线程2执行了~");
       };
       //如果执行的只有一条语句,那么大括号也能够省略
       Runnable runnable2 = ()-> System.out.println("子线程3执行了~");

       new Thread(runnable).start();
       new Thread(runnable1).start();
       new Thread(runnable2).start();

       //Lambda表达式同时也可以作为参数进行传递
       new Thread(()-> System.out.println("子线程3执行了~")).start();
   }
}

例子2:比较器的Lambda表达式使用

import java.util.Comparator;
import java.util.TreeSet;

/**
* Lambda表达式的使用
* 例子2:比较器的使用
*/
public class Demo2 {
   
   public static void main(String[] args) {
   
       //匿名内部类
       Comparator<String> comparator = new Comparator<String>() {
   
           @Override
           public int compare(String o1, String o2) {
   
               return o1.length()-o2.length();
           }
       };
       //Lambda表达式
       Comparator<String> comparator1 = (String o1, String o2)-> {
   
           return o1.length()-o2.length();
       };

       //再次简化,已经知道是String类型了,那么传进去的参数类型也可以省略
       Comparator<String> comparator2 = ( o1,  o2)-> {
   
           return o1.length()-o2.length();
       };

       //只有一条语句,可以省略大括号,同时return也要省略
       Comparator<String> comparator3 = (o1, o2)-> o1.length()-o2.length();

       TreeSet<String> treeSet = new TreeSet<>(comparator);
   }
}

方法引用
方法引用是Lambda表达式的一种简写形式。如果Lambda表达式方法体中只是调用一个特定的已经存在的方法,则可以使用方法引用。
常见形式
1)对象::实例方法
2)类::静态方法
3)类::实例方法
4)类::new

import java.util.Comparator;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

public class Demo3 {
   
    public static void main(String[] args) {
   
        //1.对象::实例方法,因为println函数是有输入无输出,和Consumer的形式相同。
        Consumer<String> consumer = s-> System.out.println(s);
        consumer.accept("Hello");
        Consumer<String> consumer1 = System.out::println;
        consumer1.accept("world");
        //2.类::静态方法。
        Comparator<Integer> comparator 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值