当前位置: 首页 > 面试题库 >

Java 10中的“ var”究竟是什么类型的令牌?

彭礼骞
2023-03-14
问题内容

在Heinz Kabutz的时事通讯上的最后一期#255 Java
10:推断的局部变量中
,它var在Java
10中不是保留字,因为您还可以将其var用作标识符:

public class Java10 {
    var var = 42; // <-- this works
}

但是,不能将ie assert用作标识符,如中的var assert = 2,因为assert它是保留字。

正如在链接的新闻通讯中所讲的那样,var不是保留字的事实是个好消息,因为这允许来自Java早期版本的var用作标识符的代码得以编译而在Java
10中没有问题。

那么,那是什么var?它既不是语言的显式类型也不是保留字,因此可以用作标识符,但是在Java
10中用于声明局部变量时,它确实具有特殊含义。局部变量声明?

另外,除了支持向后兼容性(通过允许包含var作为标识符的较旧代码进行编译)之外,var 保留字还有其他优点吗?


问题答案:

根据JEP-286:局部变量类型推断,var

不是关键字;相反,它是一个 保留的类型名称

(JEP的早期版本为保留类型名称或上下文相关关键字的实现留有余地;最终选择了以前的路径。)

因为它不是“保留关键字”,所以仍可以在变量名(和程序包名)中使用它,但不能在类名或接口名中使用它。

我认为不var保留关键字的最大原因是与旧源代码的向后兼容性。



 类似资料:
  • 问题内容: 我在jquery图像滑块演示中找到了reset.css文件,但它从未包含在主index.html文件中。应该做什么,更重要的是,您将它放在哪里?你把它之前 任何引用的样式表()? 这是reset.css内部的代码 问题答案: 最初,关于样式的工作方式还没有标准化,每个浏览器都实现了自己认为正确的方式。您在IE中看到太多有关样式错误的问题的原因之一是,因为IE是样式方面与其他浏览器最不相

  • 本文向大家介绍深入探究C++ string的内部究竟是什么样的,包括了深入探究C++ string的内部究竟是什么样的的使用技巧和注意事项,需要的朋友参考一下 在C语言中,有两种方式表示字符串: 一种是用字符数组来容纳字符串,例如char str[10] = "abc",这样的字符串是可读写的; 一种是使用字符串常量,例如char *str = "abc",这样的字符串只能读,不能写。 两种形式总

  • 问题内容: 设置或设置为弹性项目而不是设置之间有区别吗? 是属性的“转折点” 吗? 当我设置浏览器时,如何确定将项目下移到新行的哪一点?是根据他们的宽度还是“弹性基础”? 示例:最后两个框具有相同的功能,但是当窗口在300px至400px之间时, 只有 其中一个向下移动。为什么? 问题答案: 允许您在计算其他任何内容之前指定元素的初始/开始大小。它可以是百分比或绝对值。 但是,它 不是 弯曲增长/

  • 内部构造函数的准确定义是什么?在Julia-V0.6+中,“任何可以使用签名(注意部分)调用的构造函数都是内部构造函数”是正确的吗? 正如下面的注释中所讨论的,仅限于外部的构造函数实际上是吗? 使用检查方法是否是内部/外部构造函数是否正确? Julia自动定义的默认构造函数与用户显式定义的相应构造函数有什么不同? 顺便说一句,我知道如何使用以及何时使用内部构造函数。我知道什么是内部构造函数,直到只

  • 问题内容: 我到处都是,找不到可靠的答案。根据文档,在以下情况下,Java引发java.lang.StackOverflowError错误: 由于应用程序递归过深而在堆栈溢出时抛出。 但这提出了两个问题: 不仅通过递归,还有其他方法可以使堆栈溢出吗? 是在JVM实际溢出堆栈之前还是之后发生StackOverflowError? 详细阐述第二个问题: 当Java引发StackOverflowErro

  • 问题内容: 我正在阅读有关Java 10中发布的新功能的信息,我发现 引入Java 10 作为保留类型名称以减少冗长。它可以用作变量,方法和程序包名称,但是我们不能将其用作类或接口名称。 是类似于JavaScript中的关键字?Java 和JavaScript 之间到底有什么相似之处和区别? 问题答案: 两种语言在概念上都有某种相似的目的,但有一些重要的区别。 JavaScript是一种动态类型化