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
posted @ 2018-10-16 11:18  张界  阅读(189)  评论(0编辑  收藏  举报