JDK5的新特性

JDK5 的新特性

自动拆装箱
泛型
增强for
静态导入
可变参数
枚举

泛型

泛型:是一种把类型明确的工作推迟发哦创建对象或调用方法的时候才去明确的特殊类型参数化类型,把类型当做参数一样的传递。

格式
<数据类型> 此处的数据类型只能是引用类型

好处:

把运行时期的问题提前到了编译期间
避免了强制类型转换
优化了程序设计,解决了黄色警告线

使用场所: 一般是在集合中使用

泛型的定义

泛型类
把泛型定义在类上
格式:public class类名<泛型类1,泛型类2…>
注意:泛型类型必须是引用类型
泛型方法
把泛型定义在方法上
格式:public <泛型类型> 返回类型 方法名(泛型类型)
泛型接口
泛型定义在接口上
格式:public interface 接口名<泛型类型1,泛型类型2… >

泛型 —通配符(三种)

?: 表示任意的类型都可以
? extends E : 向下限定,E及其子类
? super E : 向上限定,E及其父类

增强for

增强for其实是用来替代迭代器的。
格式:
for(元素数据类型 变量:数组或Collection集合){
使用变量即可,该变量就是元素
}
优点:
简化了数组和集合的遍历
弊端:
增强for的目标不能是null
解决方法
对增强for的目标先进行不为null 的判断,然后再使用。

静态导入

格式:

import static 包名…,类名,方法名;

可以直接导入到方法的级别:

import static java.lang.Math.abs;
System.out.println(abs(-199));

注意事项

方法必须是静态的
如果有多个同名的静态方法,容易不知道使用谁,这个时候要使用,必须加前缀,由此可见,
意义不大,所以,一般不使用,但是要求能看懂。

可变参数

引入:定义方法的时候不知道该定义多少个参数。
格式:
修饰符返回值类型 方法名(数据类型…变量名){
}

注意:

这里的变量其实是一个数组
如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个。

Arrays 工具类中一个方法

public staticListasLIst(T…a)

public static int sum(int... a){
    //System.out.println(a);
    //a 其实是一个数组
    int s = 0;
    for(int x:a){
    s +=x;
    }
    return s;
}
//以上是可变参数求和

集合的toString 方法

Collection c = new ArrayList();
 c.add("hello");
 c.add("world");
 c.add("java");
 System.out.println(c);
/* 为什么c 输出的不是地址值?
    A collection c = new ArrayList();
    是多态,所以输出c 的tostring 方法,其实是输出ArrayList的toString 
    B 看ArrayList的toString 
        而我们在ArrayList里面却没有发现。toString 方法。应该是在其父类中
*/
 // c toString 方法原码
    public String toString(){
        Iterator<E> it =this.iterator();//集合本身调用迭代器方法
        if(! it.hasNext())
        return "[]";

        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for(;;){//最简单的死循环
            E e = it.next();
            sb.append(e==this ? "(this Collection)": e);
                if(! it.hasNext()){
                    return sb.append(']').toString();
                    sb.append(',').append('');
                }
         }
    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值