JDK1.5版本新特性

1. 方法的可变参数

 public static int add(int ... arr) {
        int length = arr.length;
        int sum = 0;
        for(int i =0; i < length; i++) {
             sum = sum + arr[i];
        }
        return sum;
    }

在方法中用 … 表示可变参数

可变参数必须放在方法参数的最后一个并且有且只有一个 ;

2. for-each 语句

//foreach语句格式:
for(元素类型type  元素变量value : 遍历对象obj) { 
    //引用x的java语句;  
}

3. 静态导入(import)(了解)

import static 导入一个类的所有静态域(方法与属性),
使用导入类的静态域就像是在本类中定义的一样;
使用静态导入后调用那个包中的方法可不加类名直接调用;

注意:不推荐使用静态导入;

4. 泛型

在定义时类型不确定,只有在具体使用时才能确定类型

4.1 泛型类

class MyClass<T,E> {  //泛型类可以接受多个类型
    private T t;
    private E e;
}

4.2 泛型方法

class MyClass2 {
    //可接收泛型T类型的参数
    public <T> void method(T t) {
        System.out.println(t);
    }  
}

4.3 通配符

<?>: 由于传入类型无法确定,因此无法设置具体值到相应对象中
public static void fun(Myclass<?> myclass) {
     //程序无法得知?代表哪种类型,无法设置这个对象里的属性的值,只能查看
     //myclass.setT("hahaha");   //将会报错
     System.out.println(myclass.getT());   //输出null
}

<?extends> :表示泛型上限,类与方法均可使用

public static void fun(Myclass<? extends Number> myclass)

<?super> :表示泛型下限 ,只能用在方法级别

public void fun(Myclass<? super String> myclass){}

4.4 类型擦除

泛型只存在于编译阶段,进入JVM之前,与泛型相关的信息会被完全擦除。

在JVM中并不存在泛型的概念。泛型类在进行类型擦除时,若未指定泛型的上限,泛型相关信息会被擦除为Object类,否则,擦除为相应的类型上限。

5. 枚举

//实际是一个继承于Enum类的类
enum Color {
    //private int a = 5;  这条语句将会报错,这不能写在第一行,第一行必须是要定义的枚举变量;,,;
}
public class Test1 {
    public static void main(String[] args) {
        System.out.println(Color.);
        System.out.println(Color..ordinal());  //输出对应下标
        System.out.println(Color..name());
        //产生一个包含所有枚举变量的数组
        Color[] arr = Color.values();
        for(Color c : arr) {
            System.out.print(c+"、");
        }
    }
}

注意:enum并不是一个新的结构,使用enum定义的枚举实际上默认继承Enum枚举类。因此enum定义的,枚举结构实际上就是一个多例类;

Enum类常用的三个方法:
ordinal():返回枚举对象下标,默认第一个对象为0;
name():返回枚举对象名称,默认与对象名称保持一致;
values():返回所有枚举对象的数组;

应用枚举注意:
在枚举中支持定义其他结构,如构造方法、普通方法和普通属性等;
当枚举类中还包含其他结构时,枚举对象的定义必须放在首行; (否则会编译报错)
枚举不能够再继承类,因为它默认继承了Enum类,但枚举可以实现一个或多个接口;

6. jdk内置的三大注解
注解:@标识符 @Override @Controller @Date

  1. 准确覆写: @Override

    用途:编译器检查当前覆写方法是否满足要求(方法名称是否正确、权限是否合理),以达到及时显示错误;

  2. 过期声明:@Deprecated
    在早期版本的代码(方法),表示该方法在当前版本中已经不推荐使用,但是使用了也不会报错。只是起一个警告提示作用;

  3. 压制警告:@SuppressWarnings
    压制警告信息,压制信息不再提示;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章