请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术交流,必有回复!

疯狂Java联盟

 找回密码
 加入联盟
查看: 269|回复: 0

[疯狂Java讲义] 学习求助

[复制链接]
发表于 2020-4-1 21:29:07 | 显示全部楼层 |阅读模式
interface Eatable
{
      void taste();
}
interface Flyable
{
       void fly(String weather);
}
interface Addable
{
       int add(int a, int b);
}
public class LambdaQs
{
       //调用该方法需要传入Eatable对象
       public void eat(Eatable e)
       {
               System.out.println(e);
               e.taste();
       }
       //调用该方法需要传入Flyable对象
       public void drive(Flyable f)
       {
               //此句在运行程序后,f的值是一个内存地址码
               System.out.println("我正在驾驶:" + f);
               f.fly("【碧空如洗的晴日】");
       }
       //调用该方法需要Addable对象
       public void test(Addable add)
       {
               System.out.println("5与3的和是" + add.add(5,3));
       }
       public static void main(String[] args)
       {
               LambdaQs lq = new LambdaQs();
               //Lambda表达式的代码块只有有一条语句,可以省略花括号
               lq.eat(()->System.out.println("苹果的味道不错!"));
               //Lambda表达式的形参列表只有一个参数,可以省略圆括号
               lq.drive(weather -> {
                                  System.out.println("直升机飞行平稳");
                                  System.out.println("今天的天气是:" + weather);

                        });
               //Lambda表达式的代码块只有一条语句,可以省略花括号
               //代码块中只有一条语句,即使该表达式需要返回值,也可以省略return关键字
               lq.test((a ,b) -> a + b);
       }
}
我的问题是:
      1.System.out.println("我正在驾驶:" + f);为何会出现内存地址码,而不是“直升机飞行平稳”?
      2.三个Lambda表达式是如何一步步运行成显式的结果的,谁能帮忙解释下?
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

微信群请扫二维码
QQ交流1群:
545923995
(未满)

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11094030号 )

GMT+8, 2020-5-26 12:20 , Processed in 0.218857 second(s), 6 queries , File On.

快速回复 返回顶部 返回列表