JDK的新特性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37636695/article/details/84334264

JDK5的新特性:

自动拆装箱,泛型,增强for,静态导入,可变参数,枚举。

自动拆装箱

JDK1.5以后,简化了定义方式。(定义的基本数据类型会自动装箱,定义的包装类型会自动拆箱)

 Integer x = new Integer(4);可以直接写成 Integer x = 4;//自动装箱。 x  = x + 5;//自动拆箱。通过intValue方法。 

需要注意: 在使用时,Integer  x = null;上面的代码就会出现NullPointerException。

泛型:

泛型类 

把泛型定义在类上

 格式:public class 类名<泛型类型1,…> 注意:泛型类型必须是引用类型

泛型方法 

把泛型定义在方法上 

格式:public <泛型类型> 返回类型 方法名(泛型类型 .) 

泛型接口

把泛型定义在接口上 

格式:public  interface 接口名<泛型类型1…> 

泛型高级(通配符)

泛型如果明确写了的时候,前后必须一致。

泛型通配符

<?> 

任意类型,如果没有明确,那么就是Object以及任意的Java类了 

? extends E 

向下限定,E及其子类 

? super E 

向上限定,E及其父类 

增强for

概述

简化数组和Collection集合的遍历 

格式: 

for(元素数据类型 变量 : 数组或者Collection集合) {     使用变量即可,该变量就是元素     } 

好处:简化遍历 

注意事项:增强for的目标要判断是否为null

静态导入:

格式:

import static 包名….类名.方法名; 可以直接导入到方法的级别 

注意事项 

方法必须是静态的 如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。

由此可见,意义不大,所以一般不用,但是要能看懂。 

可变参数:

可变参数概述 

定义方法的时候不知道该定义多少个参数 

格式 

修饰符 返回值类型 方法名(数据类型…  变量名){} 

注意:

 这里的变量其实是一个数组 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个 

可变参数底层是数组。

Arrays工具类中的一个方法 public static <T> List<T> asList(T... a)  

该方法把能够把数组转为集合,但是集合的底层任然是数组,长度不可变。

枚举

枚举概述 

是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。

举例:一周只有7天,一年只有12个月等。 

回想单例设计模式:单例类是一个类只有一个实例 

那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例。这才能是枚举类。

格式是:只有枚举项的枚举类 

public enum 枚举类名 {             枚举项1,枚举项2,枚举项3…; } 

枚举注意事项: 

定义枚举类要用关键字enum 

所有枚举类都是Enum的子类 

枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略 

枚举类可以有构造器,但必须是private的,它默认的也是private的。

枚举项的用法比较特殊:枚举(“”); 

枚举类也可以有抽象方法,但是枚举项必须重写该方法 

枚举在switch语句中的使用  

枚举常用方法:

int compareTo(E o) 

String name() 

int ordinal() 

String toString() 

<T> T valueOf(Class<T> type,String name) 

values()  此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便 

JDK7新特性

二进制字面量 

数字字面量可以出现下划线 

switch 语句可以用字符串 

泛型简化 

异常的多个catch合并 

try-with-resources 语句 

二进制字面量 

JDK7开始,终于可以用二进制来表示整数(byte,short,int和long)。

使用二进制字面量的好处是,可以使代码更容易被理解。

语法非常简单,只要在二进制数值前面加 0b或者0B

 举例: int x = ob110110 

数字字面量可以出现下划线

为了增强对数值的阅读性,如我们经常把数据用逗号分隔一样。

JDK7提供了_对数据分隔。 

举例: int x = 100_1000; 

注意事项: 

不能出现在进制标识和数值之间 

不能出现在数值开头和结尾 

不能出现在小数点旁边 

try-with-resources 语句 

格式: try(必须是java.lang.AutoCloseable的子类对象){…} 

好处: 资源自动释放,不需要close()了 

把需要关闭资源的部分都定义在这里就ok了 

主要是流体系的对象是这个接口的子类(看JDK7的API) 

猜你喜欢

转载自blog.csdn.net/qq_37636695/article/details/84334264