您的位置:首页 > 编程语言 > Java开发

JDK1.5新特性

2015-11-07 00:12 435 查看

JDK1.5之后的新特性

主要从以下三个方法提高: 提高效率、简化书写、提高安全性

(一). 增强for循环

1)格式:for(数据类型 元素名:被遍历的集合Collection或数组)

2)遍历集合中元素

2.1)for循环对集合进行遍历:只能获取集合元素,不能对集合进行操作

2.2)迭代器除了遍历,还可以进行remove集合中元素的操作;如果用ListIterator,还可以在遍历过程中对集合元素进行增删改查操作。

3)传统for和高级for的区别?

3.1)高级for有一个局限性,就是必须有被遍历的目标。

3.2)建议在遍历数组的时候,还是希望用传统的for循环。

示例1:

[code]import java.util.*;
class ForEach
{
    public static void main(String args[])
    {
        ArrayList<String> al = new ArrayList<String>();
        al.add("sfdg");
        al.add("fdg");
        al.add("dg");

        for(String s:al)
        {
            s = "kk";//此处并未改变集合中元素的值。
            System.out.println(s);
        }
        System.out.println(al);

        Iterator<String> it = al.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        }

        int[] arr = {3,5,1};
        for(int x=0;x<arr.length;x++)//使用一般for循环可以对数组脚标进行操作。
        {
            System.out.println(arr[x]);
        }
        for(int i:arr)//不能对数组脚标进行操作。
        {
            System.out.println(i);
        }

        HashMap<Integer,String> hm = new HashMap<Integer,String>();
        hm.put(1,"aaa");
        hm.put(2,"bbb");
        hm.put(3,"ccc");

        Set<Integer> keySet = hm.keySet();
        for(Integer key:keySet)
        {
            System.out.println(key+":"+hm.get(key));
        }

        for(Map.Entry me:hm.entrySet)
        {
            System.out.println(me.getKey()+":;:"+me.getValue());
        }

    }
}


(二). 方法的可变参数

1)格式:方法名(参数类型… arr)

2)注意:如果还有其他类型的参数,可变参数放在参数列表的最后。

[code]show("heheh",3,32,4,3,4);

        public static void show(String str,int...arr)
        {
            System.out.println(arr.length+str);
        }


如果是这样,则会报错。

[code]show(3,32,4,3,4,"heheh");

        public static void show(int...arr,String str)
        {
            System.out.println(arr.length+str);
        }


(三). 静态导入

1)格式:import static java.util.Arrays.*

2)注意点:

2.1)当类名重名时,需要指定具体的包名

2.2)当方法名重名时,需要指定方法具体所属的对象或者类。

[code]import java.util.*;
class StaticImport
{
    public static void main(String args[])
    {
        int[] arr = {1,3,4};
        Arrays.sort(arr);

        int index = Arrays.binarySearch(arr,"3");
        System.out.println("indext = "+index);
        System.out.println(Arrays.toString(arr));
    }
}


以上代码利用静态导入简化代码,如下:

[code]import static java.util.Arrays.*;
import static java.lang.System.*;
class StaticImport
{
    public static void main(String args[])
    {
        int[] arr = {1,3,4};
        sort(arr);

        int index = binarySearch(arr,"3");
        out.println("indext = "+index);
        out.println(Arrays.toString(arr));
    }
}


注: 此处的out.println(Arrays.toString(arr));换成out.println(toString(arr));则出错。

原因:因为此处首先引用的是Object类的toString()方法,此方法没有参数。所以此处Arrays类和Object类存在方法名一样的冲突,因此需要写上类名Arrays。

(四). StringBuilder

1)StringBuffer是线程同步,而StringBuilder是线程不同步。

2)StringBuilder是StringBuffer的升级版,所有的用法都一样。

2)以后开发,建议使用StringBuilder,提供效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: