java10 核心基础

java10 核心基础前言 2018 年 3 月 21 日 Oracle 官方宣布 Java10 正式发布 需要注意的是 Java 9 和 Java 10 都不是 LTS Long Term Support 版本 和过去的 Java 大版本升级不同 这两个只有半年左右的开发和维护期 而未 来的 Java 11 也就是 18 9 LTS 才是 Java 8

大家好,我是讯享网,很高兴认识大家。



前言

 2018年3月21日,Oracle官方宣布Java10正式发布。

 需要注意的是 Java 9 和 Java 10 都不是 LTS (Long-Term-Support) 版本。和过去的 Java 大版本升级不同,这两个只有半年左右的开发和维护期。而未 来的 Java 11,也就是 18.9 LTS,才是 Java 8 之后第一个 LTS 版本。

 JDK10一共定义了109个新特性,其中包含12个JEP(对于程序员来讲,真 正的新特性其实就一个),还有一些新API和JVM规范以及JAVA语言规范上 的改动。

 JDK10的12个JEP(JDK Enhancement Proposal特性加强提议)

参阅官方文档:http://openjdk.java.net/projects/jdk/10/

JDK10的12个JEP

 
讯享网 

局部变量类型推断  

 产生背景

开发者经常抱怨Java中引用代码的程度。局部变量的显示类型声明,常常被认为 是不必须的,给一个好听的名字经常可以很清楚的表达出下面应该怎样继续。

好处:

减少了啰嗦和形式的代码,避免了信息冗余,而且对齐了变量名,更容易阅读!

作为 Java开发者,在声明一个变量时,我们总是习惯了敲打两次变量类型,第 一次用于声明变量类型,第二次用于构造器。

讯享网

变量的声明类型书写复杂且较长,尤其是加上泛型的使用

 
讯享网

尽管 IDE可以帮我们自动完成这些代码,但当变量总是跳来跳去的时候,可读 性还是会受到影响,因为变量类型的名称由各种不同长度的字符组成。而且,有时候开发人员会尽力避免声明中间变量,因为太多的类型声明只会分散注意力,不会带来额外的好处。

工作原理 

在处理 var时,编译器先是查看表达式右边部分,并根据右边变量值的类型进行 推断,作为左边变量的类型,然后将该类型写入字节码当中。

注 意

 var不是一个关键字

你不需要担心变量名或方法名会与 var发生冲突,因为 java10 核心基础 var实际上并不是一个关键字,而是一个类型名,只有在编译器需要知道类型的地方才需要用到它。除此之外,它 就是一个普通合法的标识符。也就是说,除了不能用它作为类名,其他的都可以, 但极少人会用它作为类名。

 这不是JavaScript

首先我要说明的是,var并不会改变Java是一门静态类型语言的事实。编译器负责推 断出类型,并把结果写入字节码文件,就好像是开发人员自己敲入类型一样。 下面是使用 IntelliJ(实际上是 Fernflower的反编译器)反编译器反编译出的代码:

从代码来看,就好像之前已经声明了这些类型一样。事实上,这一特性只发 生在编译阶段,与运行时无关,所以对运行时的性能不会产生任何影响。所以请放心,这不是 JavaScript。

 适用于以下情况:

 

 在局部变量中使用时,如下情况不适用 :
初始值为null

 方法引用 

 Lambda表达式 

 为数组静态初始化  

不适用以下的结构中 :

 情况1:没有初始化的局部变量声明

 情况2:方法的返回类型

 情况3:方法的参数类型

 情况4:构造器的参数类型

 情况5:属性

 情况6:catch块

 

示例1和2代码基本一致,为什么一个为true,一个为false? 

从源码分析 , 可 以 看 出 copyOf 方 法 会 先 判 断 来 源 集 合 是 不 AbstractImmutableList 类型的,如果是,就直接返回,如果不是,则调用 of 创 建一个新的集合。

示例2因为用的 new 创建的集合,不属于不可变 AbstractImmutableList 类的子类,所以copyOf 方法又创建了一个新的实例,所以为false。

注意:使用of和copyOf创建的集合为不可变集合,不能进行添加、删除、替换、 排序等操作,不然会报 java.lang.UnsupportedOperationException 异常。

小讯
上一篇 2024-12-28 13:10
下一篇 2024-12-24 07:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/4318.html