发布一篇浅谈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 – 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#程序员都明白一点 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 是一种为 Internet发展的计算机语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
页:
[1]