java不同版本的增强特性

在学习版本增强的时候,各种博文众说纷纭,我看得眼花缭乱。为了学习最权威的知识,我还是查看了java的官方手册。

Java 5的增强特性:

1. 泛型:这种期待已久的类型系统增强允许类型或方法对各种类型的对象进行操作,同时提供编译时类型安全性。 它为集合框架增加了编译时类型安全性且消除了具体对象使用时的复杂性。

2. for循环的增强:这种新的语言结构消除了迭代集合和数组时迭代器和索引变量的苦差事和错误倾向。

3. 自动装箱/拆箱:此工具消除了原始类型(如int)和包装器类型(如Integer)之间手动转换的苦差事。

4. 枚举类型安全:这种灵活的面向对象的枚举类型工具允许您使用任意方法和字段创建枚举类型。 它提供了Typesafe Enum模式的所有优点,没有冗长和错误倾向。

5. 可变参数:在调用接受可变长度参数列表的方法时,此工具无需手动将参数列表装入数组。

6. 静态导入:此工具允许您避免使用类名限定静态成员,而不存在“常量接口反模式”的缺点。

7. 注解:此语言功能允许您通过启用工具从源代码中的注释生成样板代码来避免在许多情况下编写样板代码。 这导致了一种“声明式”编程风格,程序员说应该做什么,工具会发出代码来执行它。 此外,它消除了维护“side files”的需要,这些文件必须与源文件中的更改保持同步。 而是可以在源文件中维护信息。

Java 6的增强特性:

没有语言的修改。

Java 7的增强特性:

1. 二进制字面值:在Java SE 7中,也可以使用二进制数系统表示整数类型(byte,short,int和long)。 要指定二进制文字,请在数字中添加前缀0b或0B。

2. 数字文字中的下划线:任何数量的下划线字符(_)都可以出现在数字文字中的数字之间的任何位置。 例如,此功能使您可以分隔数字文字中的数字组,这可以提高代码的可读性。

3. switch语句中的字符串:可以在switch语句的表达式中使用String类。

4. 通用实例创建的类型推断:只要编译器可以从上下文中推断出类型参数,就可以用一组空的类型参数(<>)替换调用泛型类的构造函数所需的类型参数。 这对尖括号被非正式地称为diamond.。

5. 改进了在可变参数方法中使用不可重写的形参时的编译器警告和错误:Java SE 7编译器在varargs方法或构造函数的声明站点处生成警告,其中包含不可重新生成的varargs形式参数。 Java SE 7引入了编译器选项-Xlint:varargs和注释@SafeVarargs和@SuppressWarnings({“unchecked”,“varargs”})来抑制这些警告。

6. try-with-resources声明:try-with-resources语句是一个声明一个或多个资源的try语句。 资源是在程序完成后必须关闭的对象。 try-with-resources语句确保在语句结束时关闭每个资源。 实现新的java.lang.AutoCloseable接口或java.io.Closeable接口的任何对象都可以用作资源。 已经对类java.io.InputStream,OutputStream,Reader,Writer,java.sql.Connection,Statement和ResultSet进行了改进以实现AutoCloseable接口,并且所有这些类都可以在try-with-resources语句中用作资源。

7. 通过改进的类型检查捕获多个异常类型并重新引发异常:单个catch块可以处理多种类型的异常。 此外,与早期版本的Java SE相比,编译器可以更准确地分析重新抛出的异常。 这使您可以在方法声明的throws子句中指定更具体的异常类型。

Java 8的增强特性:

1. Lambda表达式:使您能够封装单个行为单位并将其传递给其他代码。 如果希望对集合的每个元素执行某个操作,进程完成时或进程遇到错误,则可以使用lambda表达式。 Lambda表达式由以下功能支持:

    1) 对于已经有名称的方法,方法引用是紧凑的、易于读取的lambda表达式。

    2) 默认方法允许您向库的接口添加新功能,并确保与为这些接口的旧版本编写的代码的二进制兼容性。它们是接口方法,在方法签名的开头有一个实现和默认关键字。此外,还可以在接口中定义静态方法。

    3) 在Java SE 8中利用lambda表达式和流的新的和增强的API描述了利用lambda表达式和流的新的和增强的类。

2. 改进了类型推断:Java编译器利用目标类型来推断泛型方法调用的类型参数。 表达式的目标类型是Java编译器所期望的数据类型,具体取决于表达式的显示位置。 例如,您可以在Java SE 7中使用赋值语句的目标类型进行类型推断。但是,在Java SE 8中,您可以在更多上下文中使用目标类型进行类型推断。 最突出的示例是使用方法调用的目标类型来推断其参数的数据类型。

3. Java类型的标注:现在可以在使用类型的任何地方应用注释。 与可插拔类型系统结合使用,可以对代码进行更强大的类型检查。

4. 重复注解:现在可以将同一批注类型多次应用于同一声明或类型使用。

5. 反射的方法参数:可以使用方法java.lang.reflect.Executable.getParameters获取任何方法或构造函数的形式参数的名称。 (Method和Constructor类扩展了类Executable,因此继承了Executable.getParameters方法。)但是,.class文件默认不存储形式参数名。 要将正式参数名称存储在特定.class文件中,从而使Reflection API能够检索形式参数名称,请使用javac编译器的-parameters选项编译源文件。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java 8 新特性包括 Lambda 表达式、函数式接口、Stream API、默认方法、Nashorn JavaScript 引擎等。Java 9 新特性包括模块化系统、JShell REPL、HTTP/2 客户端、改进的 Javadoc 等。Java 10 新特性包括局部变量类型推断、G1 垃圾收集器改进等。Java 11 新特性包括 HTTP 客户端、ZGC 垃圾收集器、Epsilon 垃圾收集器等。Java 12 新特性包括 Switch 表达式、新的垃圾收集器等。Java 13 新特性包括文本块、动态 CDS 等。Java 14 新特性包括 Switch 表达式增强、记录类型等。 ### 回答2: Java是一种面向对象的编程语言,随着时间的推移,它经历了多个版本的升级和改进。下面是Java各个版本的新特性的简要介绍。 Java 1.1:引入了内部类、JavaBeans、JDBC和RMI等新特性,提供了更强大的功能和更好的性能。 Java 1.2:引入了Swing图形库,增加了对Unicode字符集的支持,添加了集合框架和迭代器等功能,提供了更丰富的编程工具。 Java 1.3:引入了自动垃圾回收、JNDI、JAXP和Java Sound等新特性,提升了性能、安全性和可扩展性。 Java 1.4:引入了正则表达式、NIO和断言等新特性增强了网络编程和异常处理的功能。 Java 5(Java 1.5):引入了泛型、自动装箱/拆箱、枚举、注解和可变参数等新特性,提升了代码的可读性和编程效率。 Java 6(Java 1.6):引入了JDBC 4.0、桌面GUI改进和XML Web Services等新特性,提供了更好的性能和稳定性。 Java 7(Java 1.7):引入了Switch语句支持String、二进制整数表示和Fork/Join等新特性,增加了异常处理和并发编程的功能。 Java 8(Java 1.8):引入了Lambda表达式、Streams API、新的日期和时间API等新特性,提升了代码的简洁性和函数式编程能力。 Java 9(Java 9):引入了模块化系统(Java模块系统)、JShell、新的G1垃圾收集器等新特性,优化了应用程序的性能和可扩展性。 Java 10(Java 10):引入了局部变量类型推断、JEP 286和JEP 296等新特性,提供了更好的开发工具和性能优化。 Java 11(Java 11):引入了HTTP/2和底层平台API等新特性,提升了性能和安全性。 Java 12(Java 12):引入了Switch表达式、新的G1垃圾收集器优化等新特性,提供了更好的开发工具和性能优化。 Java 13(Java 13):引入了文本块、Switch表达式增强等新特性,提升了代码的可读性和运行效率。 Java 14(Java 14):引入了Pattern Matching for instanceof、Switch表达式增强等新特性,简化了代码并提升了开发效率。 Java的各个版本通过引入新特性来提升语言的功能和性能,使得开发人员能够更加高效地编写代码。不断的改进和升级使得Java成为一种受欢迎的编程语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值