Java 5到Java8 的发展
JDK 5
自动装箱与拆箱
JDK1.5 为每一个基本数据类型定义了一个封装类。使 java 中的基本数据类型也有自己的对象
int -->Integer
double --> Double
long --> Long
char --> Character
float --> Float
boolean --> Boolean
short --> Short
byte -- > Byte
- 自动装包:将基本类型转换成为对象,例如:
int --> Integer
- 自动拆包:将对象转换成为基本数据类型,例如:
Integer --> int
对于 JDK1.5 之前集合总不能存放基本数据类型的问题,现在也能够解决。
枚举
枚举是 JDK1.5 推出的一个比较重要的特性。其关键字为 enum
例如:定义代表交通灯的枚举
public enum MyEnum{
RED,GREEN,YELLOW
}
静态导入
- 优点:使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。
- 缺点:过度使用会降低代码的可读性
可变参数
在 JDK1.5 以前,当我们要为一个方法传递多个类型相同的参数时,我们有两种方法解决
- 直接传递一个数组过去
- 有多少个参数就传递多少个参数。
例如:
public void printColor(String red,String green,String yellow){
}
或者
public void printColor(String[] colors){}
这样编写方法参数虽然能够实现我们想要的效果,但是,这样是不是有点麻烦呢?再者,如果参数个数不确定,我们怎么办呢?Java JDK1.5 为我们提供的可变参数就能够完美的解决这个问题.
例如:
public void printColor(String... colors){}
如果参数的类型相同,那么可以使用 类型 三个点
,后面跟一个参数名称的形式。这样的好处就是,只要参数类型相同,无论传递几个参数都没有限制注意:可变参数必须是参数列表的最后一项(该特性对对象和基本数据类型都适用)
泛型
//给集合指定存入类型,上面这个集合在存入数据的时候必须存入String类型的数据,否则编译器会报错List<String> strs = new ArrayList<String>();
“泛型” 意味着编写的代码可以被不同类型的对象所重用。
可见泛型的提出是为了编写重用性更好的代码。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
比如常见的集合类 LinkedList
,其实现的接口名后有个特殊的部分 <>
,而且它的成员的类型 Link 也包含一个 <>
,这个符号的就是类型参数,它使得在运行中,创建一个 LinkedList 时可以传入不同的类型,比如 new LinkedList
,这样它的成员存放的类型也是 String
。
For-Each 循环
例如上面这个集合我们可以通过 for-each 遍历,这样更加简单清晰。
for(String s : strs){
System.out.println(s);
}
注意:使用 for-each 遍历集合时,要遍历的集合必须实现了 Iterator 接口