JDK 1.5新特性
1.可变参数
public void add(int... nums){ int sum = 0; for(int i=0; i<nums.length; i++){ sum += nums[i]; } System.out.println(sum); }
注意:当有多种参数时,可变参数放在最后
2.foreach
public void add(int[] nums){ int sum = 0; for(int num : nums){ sum += num; } System.out.println(sum); }
注意:foreach最早在C#中使用;用于替换for循环
3.静态导入
package xyz.pascall.study; import static java.util.Calendar.*; public class StaticImport { public static void main(String[] args) { System.out.println(DAY_OF_MONTH); } }
注意:在导入包下方法的时候,一定要添加static关键词;使用时直接指定方法名即可
4.泛型
package xyz.pascall.study; import java.util.List; import java.util.Map; public class StaticImport { public static void main(String[] args) { String name = new GenericityDemoOne<String>("小明").getT(); System.out.println(name); } } /** * 简单泛型使用 * @author zhang * * @param <T> */ class GenericityDemoOne<T>{ private T t; public GenericityDemoOne(T t) { this.t = t; } public T getT() { return t; } } /** * 泛型在方法上使用 * @author zhang * */ abstract class GenericityDemoTwo{ /** * 泛型在方法上声明 * @param t */ public static <T extends Object> void show(T t) { System.out.println(t); } /** * 通配符使用,泛型在方法参数上声明 * @param list */ public static void show(List<? extends Object> list) { System.out.println(list); } /** * 泛型在抽象方法上使用 * @param map */ public abstract <S, I> void show(Map<S, I> map); }
注意:
- 类在定义的时候使用一个标记,该标记为数据类型;
- 泛型解决向下类型转化出错问题;
- 泛型不能为基本数据类型,是能使引用数据类型;
- 通配符“?”,可以配置不同类型的泛型;
- ? extends 类:设置泛型上限(可在 声明和方法参数 上使用)
- ? super 类:设置泛型下限(可在 方法参数 上使用)
- 泛型可以定义类和接口,使用泛型时,注意声明泛型(通配符除外)
- JDK 1.7及以后,在实例化泛型类型时,可以不用在右边声明数据类型(List<String> list = new ArrayList<>();)
5.枚举
package xyz.pascall.study; public class Enumeration { public static void main(String[] args) { Color red = Color.RED; System.out.println(red.getName()); } } /** * 枚举 * @author zhang * */ enum Color{ /** * 定义实例化Color类 */ RED("红色"), GREEN("绿色"); // 定义枚举属性 private String name; private Color(String name) { this.name = name; } public String getName() { return name; } }
注意:
- 枚举类中定义的实例化必须放在类中最上面;
- enum和Enum关系:enum是关键词,Enum是类;用enum定义的枚举=一个类继承了Enum抽象类;
- Enum类的构造方法使用protected关键词修饰,属于构造方法私有化;
- 枚举支持switch,枚举属于高级的多例模式
6.Annotation(JDK 1.5最大特色)
package xyz.pascall.study; /* * Annotation中三种基本注解使用 */ public class AnnotationDemo{ /** * Override:用于准确覆写父类的方法,否则编译时出错 */ @Override public String toString() { // TODO Auto-generated method stub return super.toString(); } /** * Deprecated:用于声明方法过期 */ @Deprecated public void sayHello() { System.out.println("Hello"); } /** * SuppressWarnings:用于压制多个警告 */ @SuppressWarnings("unused") private String title; }
注意:
- Annotation利用注解的形式来实现程序的不同功能;
- Annotation有三种基本注解:@Override, @Deprecated, @SuppressWarnings