真是天道好轮回, Java 新特性:用 var 关键字,数据类型可以扔掉了?

2020-09-30 15:00:28 +08:00
 shew5689

//JDK 10 中新增了 var 局部变量推断的功能:

//场景一:定义字符串 //旧写法:

String str = "Hello, Java.";

//新写法:

var s = "Hello, Java.";

//PS:这里的旧写法指的是 JDK 10 之前的版本,而新写法指的是 JDK 10 以后(包含 JDK 10 )的版本。

//场景二:数值相加 //旧写法:

int num1 = 111; double num2 = 555.666d; double num3 = num1 + num2; System.out.println(num3);

//PS:当遇到不同类型相加时( int+ double )会发生数据类型向上转型,因此 num3 就会升级为 double 类型。

//新写法:

var n1 = 111L; var n2 = 555.666; var n3 = n1 + n2; System.out.println(n3);

//场景三:集合 //旧写法:

List<Object> list = new ArrayList<>(); list.add("Hello"); list.add("Java");

//新写法:

var list = new ArrayList<>(); list.add("Hello"); list.add("Java"); //......

//JavaScript:我慢慢靠近你,你慢慢靠近我,你中有我,我中有你,我特么谢谢你~

7953 次点击
所在节点    Java
90 条回复
love
2020-10-01 14:15:51 +08:00
@littlewing 类型和强类型完全不是一回事。类型当然重要,你 py 的函数参数和返回个啥类型都不知道,还要看一遍代码实现,非常地不生产力
ericgui
2020-10-01 14:18:18 +08:00
@seakingii 既然 compiler 层面都一样,不如直接显式声明数据类型,可读性还是很重要的
tairan2006
2020-10-01 16:07:28 +08:00
楼主有点蠢…js 那是语法糖?
seakingii
2020-10-01 17:01:25 +08:00
@ericgui 你可以继续用老的显式完整的声明。我个人更喜欢 var 类型推断
JerryCha
2020-10-01 17:58:51 +08:00
Microsoft: 因为我们跑的和香港记者一样快,以至于大家看见 Java 的 var 还以为是从 JS 学来的。
lxilu
2020-10-01 21:58:50 +08:00
@InkStone #42 VB 声明赋初值.Net 才有(非反驳)
LokiSharp
2020-10-01 23:26:17 +08:00
感觉 Java 逐渐变成 C# 的形状了
ijrou
2020-10-02 00:50:29 +08:00
早就听闻 Java 开始往 C#线路走了,果然没错。。。看来 java 还是。。。
ipwx
2020-10-02 10:44:18 +08:00
@love 论生产力,Python 3.6+ 的 type annotation 已经很足够了。
lxk11153
2020-10-15 20:12:19 +08:00
'var' is not allowed in a compound declaration

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/711895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX