java var_Java 10局部变量类型var使用禁忌

毫无疑问,Java在语法上是冗长的!其他编程语言中只要一行就能实现的功能在Java中需要几行,这是由于Java是一种静态类型语言,出于这个原因,初学者发现Java有点令人生畏。但是有一个工具可以让我们更容易

#Python 3

foo = "bar"print(foo)// JavaScriptvar foo ="bar";

console.log(foo);// JavaScriptvar foo ="bar";

console.log(foo);// Java 的字数比较多String foo ="NOT bar";

System.out.println(foo);

Java构造似乎与其他构造没有太大的不同。但是,要成功在非REPL环境中运行,如果要引入一个类,需要完整的类的文件名称(不包括.java这个扩展名),简而言之,需要编写不必要的长代码,才能在Java中执行非常简单的操作。

JEP 286救援

Java的9发布后不久,Java 10又发布了,java 9带来的Java程序员的模块系统,JShell,Javadoc搜索功能,多版本jar和其他一些有趣的功能,让程序员的生活更轻松。由于JDK增强建议(JEP)286,Java 10引入了var 。

JEP 286唯一目标是:局部变量类型推断,var让编译器为你推断省略了类型声明的变量类型,类型推断不是新的 - 如果您在Java 7或更高版本中使用过泛型,则会使用菱形(<>)来省略类型。其他一些流行的静态类型语言已经为局部变量类型推断提供了某种支持,比如Go,C#,Scala甚至C ++,Java迟到了。尽管如此,Java开发人员对这种有趣的包含感到兴奋。

应该注意var并不是Java中的关键字。它只是一个具有特殊含义的标识符,作为局部变量声明的类型。如果您还没有注意到,var仅适用于本地上下文,一旦进入main方法(以及任何其他本地上下文),您就可以将var用于局部变量声明。

用法

使用var时,编译器应该能够立即推断出类型,(否则将失败。)此外​​,var变量不能保持值null,并且它不能用作类的名称。

// Okay! Type inferredvar foo ="bar";// Not allowed! Type cannot be inferredvar foo1;//variable initializer is nullvar oh = null;//as of release 10, 'var' is a restricted local variable type and cannot be used for type declarationsclass var {}

第二个表达式失败,编译器显示无法推断局部变量foo1的类型(在没有初始化程序的情况下不能对变量使用'var')。

另外,var不允许声明多个变量。

//Not allowed//'var' is not allowed in a compound declarationvar foo ="bar", line = 1;

同样,var不能用于声明数组。伤心!

//Not Allowed//'var' is not allowed as an element type of an arrayvar lot[] = new int[10];

Var lot[] = {1, 2, 4};// This is PERMITTEDvar lot = new ArrayList();

var b = List.of(1, 2, 3, 4);

另外,var也不允许进行自引用。

// Not allowed//cannot use 'var' on self-referencing variablevar self = (self ="me");//一旦变量被声明,分配不同的类型会失败// Okayvar foo = 33;

foo = 45;// Not Allowed// Error: incompatible types: possible lossy conversion from double to intfoo = 33.0;

但是,var非常适合循环,因为它减少了必须编写的代码行。在以下循环中查看它的实际操作。

for(var i = 0; i < 10; i++)

System.out.println(i);

System.out.println("Fire!");// print 0 to 9, then Fire!

另请注意,参数不允许使用var,很容易犯这个错误。

结论

通过了解在Java 10中使用var的注意事项,你应该能够减少编写的代码量,并可能节省一些时间,虽然var看起来像是一个小功能添加,但Java开发人员肯定会经常使用它的,切换到Java 10后,你一定要充分利用它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值