时间:2021-05-20
Java是一种强类型, 许多流行的编程语言都已经支持局部变量类型推断,如js,Python,C++等
JDK10 可以使用var作为局部变量类型推断标识符
Local-Variable Type Inference(局部变量量类型推断),顾名思义只能用做为局部变量
注意
仅适用于局部变量量,如 增强for循环的索引,传统for循环局部变量不能使用于方法形参、构造函数形参、方法返回类型或任何其他类型的变量量声明标识符var不是关键字,而是一个保留类型名称,而且不支持类或接口叫var,也不符合命名规范用jshell试验或者IDEA
//根据推断为 字符串串类型var strVar = "springboot";System.out.println(strVar instanceof String); //根据10L 推断long 类型var longVar = 10 L; //根据 true推断 boolean 类型var flag = true;//var flag = Boolean.valueOf("true");//System.out.println(flag instanceof Boolean); // 推断 ArrayList<String>var listVar = new ArrayList < String > ();System.out.println(listVar instanceof ArrayList); // 推断 Stream<String>var streamVar = Stream.of("aa", "bb", "cc");System.out.println(streamVar instanceof Stream);if (flag) { System.out.println("这个是 flag 变量量,值为true");}for (var i = 0; i < 10; i++) { System.out.println(i);}try (var input = new FileInputStream("validation.txt")) {}附录:下面看下局部变量类型推断
很多人抱怨Java是一种强类型,需要引入大量的样板代码。甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的。许多流行的编程语言都已经支持某种形式的局部变量类型推断:如C++ (auto), C# (var), Scala (var/val), Go (declaration with :=)等。
JDK10 可以使用var作为局部变量类型推断标识符,此符号仅适用于局部变量,增强for循环的索引,以及传统for循环的本地变量;它不能使用于方法形式参数,构造函数形式参数,方法返回类型,字段,catch形式参数或任何其他类型的变量声明。
标识符var不是关键字;相反,它是一个保留的类型名称。这意味着var用作变量,方法名或则包名称的代码不会受到影响;但var不能作为类或则接口的名字(但这样命名是比较罕见的,因为他违反了通常的命名约定,类和接口首字母应该大写)。
参考一下示例:
var str = "ABC"; //根据推断为 字符串类型var l = 10L;//根据10L 推断long 类型var flag = true;//根据 true推断 boolean 类型var flag1 = 1;//这里会推断boolean类型。0表示false 非0表示truevar list = new ArrayList<String>(); // 推断 ArrayList<String>var stream = list.stream(); // 推断 Stream<String>反编译class文件:
String str = "ABC";long l = 10L;boolean flag = true;int flag1 = true;ArrayList<String> list = new ArrayList();Stream<String> stream = list.stream();从上面示例可以看出,当我们是用复杂的方法时,不需要特意去指定他的具体类型返回,可以使用var推断出正确的数据类型,这在编码中,可以大幅减少我们对方法返回值的探究。
到此这篇关于JDK10中的局部变量类型推断var的文章就介绍到这了,更多相关JDK10局部变量类型推断var内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
简介在JDK10的新特性:本地变量类型var中我们讲到了为什么使用var和怎么使用var。今天我们来深入的考虑一下var和泛型,多个接口实现的问题。实现多个接口
定义在函数外的变量一定是全局变量;定义在函数内的变量,如果声明了var,那该变量就是局部变量,如果不声明var,那么该变量就是全局变量。1、全局变量与局部变量J
var有三种声明的情形:var声明的全局变量var在函数范围内声明的局部变量eval中声明的全局变量。首先,1、2种情形var声明的变量是无法删除的。尽管var
本文对java中的局部变量和全局变量作了如下介绍:1、局部变量:局部变量的定义:定义在方法中的变量都是局部变量(main方法也是方法,所以定义在main方法中的
PHP中变量的作用域可以分为:超全局(全局变量的特殊类型,在局部范围里可直接使用),全局,局部,静态(是局部变量的特殊类型)在PHP中,全局变量实际上是静态全局