浅析java 10中的var关键字用法

2018年3月20日,Oracle发布java10。java10为java带来了很多新特性,其中让人眼前一亮的便是var关键字的引入。

what

•java10引入了局部变量折断 var用于声明局部变量。

如var user=new ArrayList<User>();

why

•避免了信息冗余
•对齐了变量名
•更容易阅读

how

•java10之前的变量声明:

URL codefx = new URL("http://codefx.org")
URLConnection connection = codefx.openConnection();
Reader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));

•java10

var codefx = new URL("http://codefx.org");
var connection = codefx.openConnection();
var reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));

•在处理 var时,编译器先是查看表达式右边部分,也就是所谓的构造器,并将它作为变量的类型,然后将该类型写入字节码当中。

attention

•只能用于带有构造器的局部变量,以下场景不适用

var foo; foo = "Foo";
var ints = {0, 1, 2};
var appendSpace = a -> a + " ";
private var getFoo(){}

•除了局部变量,for循环是唯一可以使用 var的地方:

var numbers = List.of("a", "b", "c");
for (var nr : numbers)
System.out.print(nr + " ");
for (var i = 0; i < numbers.size(); i++)
System.out.print(numbers.get(i) + " ");

总结

以上所述是小编给大家介绍的java 10中的var关键字用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

推荐:

感兴趣的朋友可以关注小编的微信公众号【码农那点事儿】,更多网页制作特效源码及学习干货哦!!!

(0)

相关推荐

  • 谈谈Java类型中ParameterizedType,GenericArrayType,TypeVariabl,WildcardType

    (1). 和反射+泛型有关的接口类型 java.lang.reflect.Type:java语言中所有类型的公共父接口 java.lang.reflect.ParameterizedType java.lang.reflect.GenericArrayType java.lang.reflect.WildcardType 1. Type直接子接口 ParameterizedType,GenericArrayType,TypeVariable和WildcardType四种类型的接口 Paramet

  • 详解Java 10 var关键字和示例教程

    关键要点 Java 10引入了一个闪亮的新功能:局部变量类型推断.对于局部变量,现在可以使用特殊的保留类型名称"var"代替实际类型. 提供这个特性是为了增强Java语言,并将类型推断扩展到局部变量的声明上.这样可以减少板代码,同时仍然保留Java的编译时类型检查. 由于编译器需要通过检查赋值等式右侧(RHS)来推断var的实际类型,因此在某些情况下,这个特性具有局限性,例如在初始化Array和Stream的时候. 如何使用新的"var"来减少样板代码. 在本文中,

  • Java源码解析之TypeVariable详解

    TypeVariable,类型变量,描述类型,表示泛指任意或相关一类类型,也可以说狭义上的泛型(泛指某一类类型),一般用大写字母作为变量,比如K.V.E等. 源码 public interface TypeVariable<D extends GenericDeclaration> extends Type { //获得泛型的上限,若未明确声明上边界则默认为Object Type[] getBounds(); //获取声明该类型变量实体(即获得类.方法或构造器名) D getGenericDe

  • Javarscript中模块(module)、加载(load)与捆绑(bundle)详解

    JS模块简介 js模块化,简单说就是将系统或者功能分隔成单独的.互不影响的代码片段,经过严格定义接口,使各模块间互不影响,且可以为其他所用. 常见的模块化有,C中的include (.h)文件.java中的import等. 为什么JS需要模块 很显然,没有模块我们也可以实现同样的功能,为什么我们还要使用模块来写js代码呢?下面几点是模块化给我们带来的一些变化: 抽象代码:我们在使用模块来调用一个api时,可以不用知道内部是如何实现的,避免去理解其中复杂的代码: 封装代码:在不需要再次修改代码的前

  • 浅析java 10中的var关键字用法

    2018年3月20日,Oracle发布java10.java10为java带来了很多新特性,其中让人眼前一亮的便是var关键字的引入. what •java10引入了局部变量折断 var用于声明局部变量. 如var user=new ArrayList<User>(); why •避免了信息冗余 •对齐了变量名 •更容易阅读 how •java10之前的变量声明: URL codefx = new URL("http://codefx.org") URLConnection

  • C#中的var关键字用法介绍

    从.NET 3.0开始,在方法内部可以使用var关键字声明局部变量.var关键字到底是什么?在何种情况下使用呢? var关键字用来隐式地声明一个数据类型,变量类型是在编译期确定的,而不是在运行时确定的 声明一个var变量a,把整型数10赋值给a,接着把一个字符串赋值给变量a.运行发现报错:无法将类型string隐式转换为int. 声明一个var变量a,把整型数10赋值给a,接着把一个字符串赋值给变量a.运行发现报错:无法将类型string隐式转换为int. 这说明:用var声明一个变量时,虽然不

  • JAVA中的final关键字用法实例详解

    本文实例讲述了JAVA中的final关键字用法.分享给大家供大家参考,具体如下: 根据上下文环境,java的关键字final也存在着细微的区别,但通常指的是"这是无法改变的."不想改变的理由有两种:一种是效率,另一种是设计.由于两个原因相差很远,所以关键子final可能被误用. 接下来介绍一下使用到final的三中情况:数据,方法,类 final数据 许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的.有时数据的恒定不变是很有用的,例如: 1. 一个编译时恒定不变的常量 2.

  • C#中var关键字用法分析

    本文实例分析了C#中var关键字用法.分享给大家供大家参考.具体方法如下: C#关键字是伴随着.NET 3.5以后,伴随着匿名函数.LINQ而来, 由编译器帮我们推断具体的类型.总体来说,当一个变量是局部变量(不包括类级别的变量),并且在声明的时候初始化,是使用var关键字的前提.具体什么时候使用,什么时候不使用,以下是个人浅见. 1.声明匿名函数时使用var关键字 复制代码 代码如下: var temp = new {Name="", Category=""};

  • golang中的select关键字用法总结

    1.官方解释 一个select语句用来选择哪个case中的发送或接收操作可以被立即执行.它类似于switch语句,但是它的case涉及到channel有关的I/O操作.即select就是用来监听和channel有关的IO操作,当 IO 操作发生时,触发相应的动作. 2.要点 如果有一个或多个IO操作可以完成,则Go运行时系统会随机的选择一个执行,否则的话,如果有default分支,则执行default分支语句,如果连default都没有,则select语句会一直阻塞,直到至少有一个IO操作可以进

  • Java类的访问权限关键字用法说明

    Java中提供了三个关键字在类的内部设置边界,控制类的访问权限,分别是:public.protected.private.这些访问的指定词决定了紧跟其后的被定义的东西可以被谁使用. public:表示其后的元素对任何人都可以使用. private:表示其后的元素除了类型的创建者和内部的方法之外任何人都不能访问. protected:与private相当,差别在于继承的类可以访问protected修饰的元素,同包中的其他类元素也可以访问. Java还有一种默认的访问权限,在不指定任何关键字的情况下

  • javascript与jquery中的this关键字用法实例分析

    本文实例分析了javascript与jquery中的this关键字用法.分享给大家供大家参考,具体如下: this 表示当前的对象,这个当前对象可以是表单,<p>等任何元素 1.javascript中this的用法: JS部分: <script type="text/javascript"> function chimg(obj){ obj.src="./images/2.jpg"; } </script> HTML部分: 复制代

  • 浅谈Java编程中的synthetic关键字

    java synthetic关键字.有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field.小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class.所以你不能要求太多. 下面我给大家介绍一下synthetic 下面的例子是最常见的synthetic field Java代码 class parent { public void foo() { } class inner { inner() { foo

  • java程序中protobuf的基本用法示例

    目录 简介 为什么使用protobuf 定义.proto文件 编译协议文件 详解生成的文件 Builders 和 Messages 序列化和反序列化 协议扩展 总结 简介 Protocol Buffer是google出品的一种对象序列化的方式,它的体积小传输快,深得大家的喜爱.protobuf是一种平台无关和语言无关的协议,通过protobuf的定义文件,可以轻松的将其转换成多种语言的实现,非常方便. 今天将会给大家介绍一下,protobuf的基本使用和同java结合的具体案例. 为什么使用pr

  • c#中var关键字用法浅谈

    VAR 是3.5新出的一个定义变量的类型其实也就是弱化类型的定义VAR可代替任何类型编译器会根据上下文来判断你到底是想用什么类型的 至于什么情况下用到VAR   我想就是你无法确定自己将用的是什么类型就可以使用VAR     类似 OBJECT但是效率比OBJECT高点 使用var定义变量时有以下四个特点:1. 必须在定义时初始化.也就是必须是var s = "abcd"形式,而不能是如下形式:var s;s = "abcd";2. 一但初始化完成,就不能再给变量赋

随机推荐