|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先谈谈我对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#程序员都明白一点 |
|