前言:本人在看《Java核心技术I》的时候对lamdba表达式还不是太上心,只是当做一个Java 8的特性了解一下而已,可是在《Java核心技术II》里面多次用到,所以重新入门来学。


  

  看教程说()->3就是直接输出3这个数字,所以我这么写:

  System.out.println(()->3);

  果不其然,报错了,错误的提示是:The target type of this expression must be a functional interface.(该表达式的目标类型必须是功能性接口)。也就是时候再怎么不济,最起码接收这个表达式的变量类型也是一个功能性接口吧。本人是Java小白一个,不知道functional interface是什么,索性就直接拿个interface来写了。

public class LambdaTest{
interface Test{
void sayMessage(String message);
}
public static void main(String[] args) {
Test t = message->System.out.println(message);
t.sayMessage("3"); //为什么不能是int类型的3呢?因为在接口里面就已经声明了sayMessage方法的参数是一个String类型的变量。
}
}

  以上一个很简单的输出语句。但是也要经过:创建接口->定义方法->实现方法这几个步骤才能实现System.out.println()语句。

  那假设我想要用lambda表达式进行加法运算呢?可以直接用()->1+2得到吗?答案是肯定不行啊!那可以直接用上面的代码修改成message->1+2吗?答案也是不行滴。为什么呢?请看报错的信息先:Void methods cannot return a value。当初是你要void,void就void,现在又要用int,把value return回来 。

  那么重新改下代码,改成这样子:

  interface Test{
int sayMessage(String message);
}
public static void main(String[] args) {
Test t = message->1+2;
System.out.println(t.sayMessage("1"));
}

  会发现,打印出来的值是3,传入的参数"1"没有任何作用,那留着"String message"这个参数做什么呢?过年加菜吗?所以可以改成:

  interface Test{
int sayMessage();
}
public static void main(String[] args) {
Test t = ()->1+2; //此处不需要参数,因为lambda表达式中没有参数。
System.out.println(t.sayMessage());
}

  结果依然是打印出

lambda表达式的简单入门的更多相关文章

  1. 函数:lambda表达式 - 零基础入门学习Python021

    函数:lambda表达式 让编程改变世界 Change the world by program lambda表达式 Python允许使用lambda关键字来创建匿名函数.我们提到一个新的关键字:匿名 ...

  2. Java中Lambda表达式的简单使用

    Lambda表达式是Java SE 8中一个重要的新特性.你可以把 Lambda表达式 理解为是一段可以传递的代码 (将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格 ...

  3. C# lambda表达式(简单易懂)

    前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅.据说它是微软自c#1.0后新增的最重要的功能之一 ...

  4. 对委托 以及 action func 匿名函数 以及 lambda表达式的简单记录

    class Program { public delegate void MyDelegate(string str); static void Main(string[] args) { // My ...

  5. python 用lambda表达式代替简单的函数, 匿名函数

    lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方 格式: lambda 参数列表:return [表达式] 变量 由于lambda返回的是函数对象(构建的是一个函数对象),所 ...

  6. Funq之Lambda表达式入门

    今天接受了一个Tranning关于.net3.5 framework中的new feature. 其中最不明白的还是Lambda表达式.回来后又仔细的思考了一番,总算有点体会在这里写一下.既然是入门, ...

  7. 3分钟入门lambda表达式

    本节是lambda表达式的一个入门课,讲解的同时配有练习demo 前言什么是lambda表达式?基础语法函数式接口自己实现一个函数式接口jdk提供的函数式接口Consumersupplierfunct ...

  8. Lambda表达式(一)入门认识篇

    Lambda表达式(一)入门认识篇 Lambda简介 Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极 ...

  9. Java Lambda表达式入门[转]

    原文链接: Start Using Java Lambda Expressions http://blog.csdn.net/renfufei/article/details/24600507 下载示 ...

随机推荐

  1. python_re函数

    1,贪婪和非贪婪模式 重复运算符默认是贪婪的,即会进行尽可能多的匹配 代码示例: >>> import re >>> emphasis_pattern = re.c ...

  2. sql语句之约束条件

    not null约束,需设置默认值 sex enum('male','female') not null default 'male' unique 约束,值唯一 单列唯一: create table ...

  3. c++的const总结(转)

    为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ...

  4. PPJQR-GKK-2深度学习及应用

    参考资料: UFLDL:http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial Deep Learning Turtorial:h ...

  5. MySql用户配置

    数据库:MySQL5.7 注意事项: MySQL5.7 mysql.user 表没有 password字段 改 authentication_string: 一.前言 我们在创建数据库和权限的时候才用 ...

  6. SQL Server知识详解

    1.SET NOCOUNT ON的作用: 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息. 语法:SET NOCOUNT {ON | OFF} 详解:当SET ONCOUNT ...

  7. Linux 获取文件属性

    使用stat/lstat获取文件属性 头文件:#include <sys/types.h> #include <sys/stat.h> int stat(const char ...

  8. java多线程中用到的方法详细解析

    在多线程学习的过程中涉及的方法和接口特别多,本文就详细讲解下经常使用方法的作用和使用场景. 1.sleep()方法.      当线程对象调用sleep(time)方法后,当前线程会等待指定的时间(t ...

  9. APP为什么会被打回来??

    APP的设置界面, 按钮使用了类似iPhone的操作方式以及icon的圆角设计  ->  重新设计 APP的年龄设置太低  ->  改年龄 APP里有实物奖励  ->  免责声明, ...

  10. 【BZOJ4548】小奇的糖果

    →原题传送门←(by Hzwer) 「题目背景」 小奇不小心让糖果散落到了地上,它对着满地的彩色糖果胡思乱想. 「问题描述」 有 N 个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或 ...