海妖 发表于 2015-1-18 11:05:23

发布一篇浅谈Java 7的闭包与Lambda表达式之好坏

先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。
头几天Oracle推出了Java7官方的闭包与Lambda表达式的第一个完成,这基础上也是终极在正式版中的款式了。看了这个完成以后,我的第一感到即是“丑”,固然不扫除这是由于看惯了其他言语中完成的原因。厥后再细心看了看又想了想,发明Java7的完成也并不是毫无可取的地方,但仿佛又感应某些做法上有一些成绩。总之全部历程很是风趣,决意将我的设法纪录上去,但愿能够吸惹人来一同会商一下。
Java7中的Lambda表达式
Java7中的Lambda表达式有两种情势,起首是第一种:
#int() func1 = #()(3); // "func1.()" returns 3
#int(int) func2 = #(int x)(x + 1); // "func2.(3)" returns 4
#int(int, int) func3 = #(int x, int y)(x - y); // "func3.(5, 3)" returns 2
然后是第二种,寄义与下面等价:
#int() func1 = #(){ return 3; };
#int(int) func2 = #(int x){ return x + 1; };
#int(int, int) func3 = #(int x, int y){ return x – y; };
假如Lambda的body是“单个表达式”的话,即可以利用“小括号”,并省往最初的return关头字;如果body中必要包括多条语句的话,则必需利用“年夜括号”,而年夜括号外部能够包括多条语句,就像一个普通的办法体一样。这两种写法在C#中也有对应物,如在“单个表达式”的情形下:
// C#
Func<int> func1 = () => 3; // "func1()" returns 3
Func<int, int> func2 = x => x + 1; // "func2(3)" returns 4
Func<int, int, int> func3 = (x, y) => x - y; // "func3(5, 3)" returns 2
第二种,即多条语句:
// C#
Func<int> func1 = () => { return 3; };
Func<int, int> func2 = x => { return x + 1; };
Func<int, int, int> func3 = (x, y) => { return x &ndash; y; };
Java和C#的Lambda表达式都由两部分构成:“参数列表”和“表达式体”,可是它们有以下区分:
在Java中参数列表和表达式体之间没有分开标记,而C#利用“=>”分开。
关于“单个表达式”的Lambda来讲,C#能够无需利用括号包括表达式体,而Java必需利用小括号。
假如只要单个参数,那末C#的参数列表能够省往小括号,而Java必需保存。
C#对参数列表会举行“范例揣度”,而Java必需写清参数范例。
<p>
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点

活着的死人 发表于 2015-1-20 14:12:18

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

只想知道 发表于 2015-1-29 08:43:52

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

精灵巫婆 发表于 2015-2-6 00:07:27

是一种为 Internet发展的计算机语言

金色的骷髅 发表于 2015-2-14 11:58:27

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

再现理想 发表于 2015-3-4 06:13:14

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

山那边是海 发表于 2015-3-11 17:42:21

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

小妖女 发表于 2015-3-19 04:22:57

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

谁可相欹 发表于 2015-3-27 07:37:45

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
页: [1]
查看完整版本: 发布一篇浅谈Java 7的闭包与Lambda表达式之好坏