java10新特性:本地变量(local variable)-var类型推断
Posted Dreamer who
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java10新特性:本地变量(local variable)-var类型推断相关的知识,希望对你有一定的参考价值。
本地变量(local variable)-var类型推断,一种java语法糖,编译器根据代码上下文信息--字面量值、方法调用、声明等,推断变量类型,并且把类型信息添加到对应的生成的字节码里。
先来个例子:
public class TypeInference
public static void main(String[] args)
var time = LocalDateTime.now();
System.out.println(time);
输出:
2019-10-19T16:53:46.328211
变量time直接可以用var来声明类型了。
var类型推断全都是编译器的功劳,当编辑器必须根据上下文信息猜测到该变量的类型信息,否则,字节码生成的时候由于类型不确定会报错提示。
使用var的规则:
- 本地变量必须初始化
没初始化的变量,编译器没办法根据初始值来判断变量的类型,记住:var不是动态类型,java语言是强类型。
如示例:
public static void main(String[] args)
var time;
var name = null;
System.out.println(time);
错误提示:
- var 关键字被用在本地类型变量
本地类型变量一般用来存储临时值并且生命周期比较短。本地类型变量一般在方法内、构造函数或者初始化块(示例初始化块或者静态初始化块)内。可以出现的语句块如下图所示:
看个其他的例子:
示例:
public static void main(String[] args)
var num = 999_999_999_999;
System.out.println(num);
我们以为这个很大的数字能被java编译器很智能的推断为long类型,可是当我们运行时
IDE同时也给我们提示:
因为数字类型的字面值默认是int类型,这和我们不使用var一样会提示错误:
这两种情况的处理方法就是明确给出数字字面变量值的类型-后面加个字面“L”即可:
long num = 999_999_999_999L;
var num2 = 999_999_999_999L;
还好,决定数情况下IDE会帮助我们提示。
以上是关于java10新特性:本地变量(local variable)-var类型推断的主要内容,如果未能解决你的问题,请参考以下文章