分类
商品
商品
店铺
资讯
分类
商品
商品
店铺
资讯

var 是 Java 开发的好朋友啊!

  • 时间:2018-11-19 22:54 作者:极小光 来源:极小光 阅读:253
  • 扫一扫,手机访问
摘要:简评:Java var != JavaScript var。Java 10 中引入了新的语法用于局部变量类型推断,很多开发者有所疑惑,希望这篇文章能帮到你。什么是类型推断其实在 Java 中类型推断早就存在了,看下下面的例子:public void doSomething() { final

简评:Java var != JavaScript var。

Java 10 中引入了新的语法用于局部变量类型推断,很多开发者有所疑惑,希望这篇文章能帮到你。

什么是类型推断

其实在 Java 中类型推断早就存在了,看下下面的例子:

public void doSomething() {    final List<String> names = new ArrayList<String>();                                         //  ^^^^^^------- Redundant    ...}

在这个例子中给 ArrayList 定义持有的类型就没必要了,由于 List<String> 已经定义了我们需要的类型 String ,在 Java 7 中添加了类型推断,这时例子可以直接写成

public void doSomething() {    final List<String> names = new ArrayList<>();                                         // ^^------ Inferred!    ...}

这两种写法是完全合法的,而且最终会形成一样的字节码。对经常使用泛型的开发者来说,可能早就对上面的类型推断写法习以为常。

那什么是局部变量类型推断?

即能推断出方法中局部变量的类型,这是 Java 10 中新添加的特性,对应关键词 var,看个例子 :

public void doSomething() {    final ??? name = "Todd";}

name 是什么类型,很显著是 String,而 Java 10 即可以让编译器帮我们判断其类型,我们只需写成下面的形式:

public void doSomething() {    final var name = "Todd";   // name is inferred as a String!}

var 的使用不局限于函数内公告的变量,同时也可以用于循环的索引:

final List<String> names = new ArrayList<>();public void doSomething() {    for(var name: names) {        System.out.println("Name: " + name);    }    for(var i = 0; i < names.size(); i++) {        System.out.println("Name: " + names.get(i));    }}

我必需使用 var 吗?不是的,老方法一样完美支持。

这样的做法危险吗?

一个字:不。

简单说它是受限于它们存在的方法(或者循环公告)的范围。这意味着除了公告它们的方法的开发之外,人们不编写依赖于这些类型的代码。

还有大家会有一个疑惑,很多语言也是不需要定义类型的,完全由编译器搞定,以 JavaScript 举例:

var x = "Todd"

简单吧,x 是 String 类型的,但是在 JS 中能重新定义类型,比方:

var x = "Todd"x = 42  // Now it's an int?!

像这种 Java 以后是不是也不用考虑变量类型了?错,和JS 不一样,Java 中的 var 只能在局部变量使用外,同时是不能重复赋值的,就拿上面的例子,会导致编译错误:

public void doSomething() {    var x = "Todd";    x = 42;    // Compiler fails on this line:                // Error: java: incompatible types: int cannot be converted to java.lang.String}

所以 var 一点都不危险,Java 也不会因而变成动态类型分配语言,这仅仅是对局部变量多了一种定义方式。

总结下

  1. Var 是我们的好朋友;
  2. Java var != JavaScript var;
  3. Var 处理了你显示公告变量的少量麻烦,但他们仍然存在;
  4. Var 公告的变量和显示公告的变量是一模一样的;
  5. Var 类型变量不会影响到你其余的代码;
  6. 多理解一下总不会错吧!

原文链接:Java Developers: var Is Your Friend
推荐阅读:改进 GitHub 工作流的 15 个建议

已是最前 目录 下一篇
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
【系统环境|软件环境】一步步教你开发、部署第一个去中心化应用 - 宠物商店(2022-03-15 15:13)
【系统环境|软件环境】循序渐进!一文学会高性能开发十大必需掌握的核心技术。(2022-03-15 15:13)
【系统环境|软件环境】Python游戏开发,pygame模块,Python实现贪吃蛇小游戏(2022-03-15 15:13)
【系统环境|软件环境】Spring Cloud Feign 记录单个服务耗时并处理 Hystrix 线程隔离模式!(2022-03-15 15:13)
【系统环境|软件环境】js数组方法全解(2022-03-15 15:12)
【系统环境|软件环境】字节二面:小伙子你来说下什么是伪共享?如何避免?(2022-03-15 15:12)
【系统环境|软件环境】写了Bug,误执行 rm -fr /*,我删删删删库了,要跑路吗?(2022-03-15 15:12)
【系统环境|软件环境】算法四:数字-复数计算(2022-03-15 15:12)
血鸟云
手机二维码手机访问领取大礼包
返回顶部