一:Jdk1.5
自动装箱与拆箱
-
自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。
-
自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。
-
自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。
-
自动拆箱,只需将该对象值赋给一个基本类型即可。
-
java——类的包装器
-
类型包装器有:Double,Float,Long,Integer,Short,Character和Boolean
枚举
-
把集合里的对象元素一个一个提取出来。枚举类型使代码更具可读性,理解清晰,易于维护。枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。
-
简单的用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。
-
复杂用法:Java为枚举类型提供了一些内置的方法,同事枚举常量还可以有自己的方法。可以很方便的遍历枚举对象。
静态导入
-
通过使用 import static,就可以不用指定 Constants
类名而直接使用静态成员,包括静态方法。 -
import xxxx 和 import static
xxxx的区别是前者一般导入的是类文件如import
java.util.Scanner;后者一般是导入静态的方法,import static
java.lang.System.out。
可变参数
-
可变参数的简单语法格式为:
-
methodName([argumentList], dataType… argumentName);
内省
-
内省是Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新
的值。通过getName/setName来访问name属性,这就是默认的规则。Java中提供了一套API用来访问某个属性的getter
/setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中。 -
一
般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器
(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来
调用这些方法。
泛型
- C++
通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。
For-Each循环
- For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。
二:Jdk1.7
Switch中可以使用字串
"<>"这个玩意儿的运用List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断
自定义自动关闭类
以下是jdk7 api中的接口
只要实现该接口,在该类对象销毁时自动调用close方法,你可以在close方法关闭你想关闭的资源,例子如下
新增一些取环境信息的工具方法
Boolean类型反转,空指针安全,参与位运算
两个char间的equals
安全的加减乘除
对Java集合(Collections)的增强支持
在JDK1.7之前的版本中,Java集合容器中存取元素的形式如下:
以List、Set、Map集合容器为例:
在JDK1.7中,摒弃了Java集合接口的实现类,如:ArrayList、HashSet和HashMap。而是直接采用[]、{}的形式存入对象,采用[]的形式按照索引、键值来获取集合中的对象,如下:
数值可加下划线
支持二进制文字
简化了可变参数方法的调用
当程序员试图使用一个不可具体化的可变参数并调用一个*varargs*
(可变)方法时,编辑器会生成一个“非安全操作”的警告。
在try catch异常扑捉中,一个catch可以写多个异常类型,用"|"隔开
jdk7之前,你必须用try{}finally{}在try内使用资源,在finally中关闭资源,不管try中的代码是否正常退出或者异常退出。jdk7之后,你可以不必要写finally语句来关闭资源,只要你在try()的括号内部定义要使用的资源
jdk1.7之前:
Jdk1.7之后
三:jdk1.8
接口的默认方法
Lambda 表达式
函数式接口
方法与构造函数引用
Lambda 作用域
在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
访问局部变量
访问对象字段与静态变量
访问接口的默认方法
即接口中可以声明一个非抽象的方法做为默认的实现,但只能声明一个,且在方法的返回类型前要加上“default”关键字。
-------------------