System.out::print 与 System.out.print的区别

原文:https://blog.csdn.net/Sky786905664/article/details/80060648?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=2630ecd1-3972-4432-9795-29d548f50de8&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

System.out::print :是方法引用

方法引用是当你想把一个方法当作一个“函数指针”传给别的方法用时有用的。

例如说,我有个ArrayList想把里面每个元素都打印出来,每个元素一行。
那么Java 8之前会这样写:

  for (ElementType e : list) {
    System.out.println(e);
  }

从Java 8开始,使用ArrayList的新API加上lambda表达式,我们可以这样写:

  list.forEach(e -> System.out.println(e));

而这里的lambda表达式的内容其实只不过就是把参数传给了println()方法,而没有做任何别的事情,所以可以进一步简写为:

  list.forEach(System.out::println);

仅此而已。

重点:

  • System.out是一个PrintStream实例的引用;System.out::println 是对一个实例方法的引用。该引用同时指定了对实例(System.out)的引用以及对方法(PrintStream::println)的引用
  • System.out::println 不是 System.out.println
    的等价物;前者是一个方法引用表达式,而后者不能单独作为一个表达式,而必须在后面跟上由圆括号包围的参数列表来构成方法调用表达式。
  • System.out::println 可以看作 lambda表达式 e -> System.out.println(e) 的缩写形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值