1、泛型技术
2、枚举技术
3、自动装箱和拆箱
4、可变参数
5、注解技术
6、for/in语句
7、静态导入
8、字符串格式化
9、Java5.0线程并发库 java.util.concurrent
特性一:泛型技术
泛型应用 一 :类型安全的集合
List的三种遍历方式:
Set的两种遍历方式
Map的两种遍历方式
泛型应用二:自定义泛型
泛型技术 : 任意类型
泛型通配符: 任意泛型 --- ?
通配符的上下边界
? extends Integer : Integer的任意子类型 (上边界)
? super Integer : Integer的任意父类型 (下边界)
特性二:枚举技术
为什么要有枚举:数据在一定范围内取值
通过enum 定义枚举
public enum 枚举类名称{
对象1,对象2,对象3... 对象n ;
}
枚举入门案例:员工和角色
// 带有枚举功能自定义类
class Role2 {
public static final Role2 BOSS = new Role2();
public static final Role2 MANAGER = new Role2();
public static final Role2 WORKER = new Role2();
// 不允许你自定义对象 构造函数私有
private Role2() {
}
}
简化为 :
// 枚举类定义
enum Role3 {
BOSS, MANAGER, WORKER;
}
* Role3 相当于一个class , BOSS和MANAGER、WORKER都是Role3类对象 (public static final )
* 确保构造方法 private
* JDK5 switch 语句可以用 5种类型 byte short int char + enum
* JDK7 switch 语句可以用 6种类型 byte short int char + enum + String
<--------枚举对象的API使用: 枚举对象、枚举对象下标、枚举对象名称表示之间的转换-------->
package cn.itcast.enumtest;
import org.junit.Test;
/**
* 枚举对象的API使用: 枚举对象、枚举对象下标、枚举对象名称表示之间的转换
*
* @author seawind
*
*/
public class EnumTest2 {
@Test
public void demo3() {
// 已知枚举对象 下标 。获得枚举对象 和 名称
int index = 2;
// 转换下标到对象
Category[] values = Category.values();
Category category = values[index];
// 输出名称 name
System.out.println(category.name());
}
@Test
public void demo2() {
// 已知枚举对象名称,转换枚举对象 获得下标
String name = "数码产品";
// 转换name 到枚举对象
Category category = Enum.valueOf(Category.class, name);// 1种
Category category2 = Category.valueOf(name);// 2种
// 输出下标 ordinal
System.out.println(category.ordinal());
System.out.println(category2.ordinal());
}
@Test
public void demo1() {
// 已知 枚举对象 ---- 获得对象名称和下标
Category category = Category.电脑办公;
// 获得对象名称 name()
System.out.println(category.name());
// 获得对象下标 ordinal()
System.out.println(category.ordinal());
}
}
enum Category {
家用电器, 数码产品, 日常用品, 电脑办公;
}
所有定义枚举对象 都将自动继承 java.lang.Enum 类
name() 返回枚举对象名称
ordinal() 返回枚举对象下标
valueof(Class enumClass, String name) 转换枚举对象
在自定义枚举类经过 编译后,自动添加两个方法
valueof(String name) 转换枚举对象
values() 获得所有枚举对象数组
单态设计模式:饿汉和懒汉
// 单态 : 饿汉和懒汉 ---- 一个类只能有一个对象
// 要点:private static 成员对象 + private 构造函数