(80)高级for循环(尤其是在集合中的简写形式)、可变参数、静态导入

来源:互联网 发布:阿里云市场 怎么用 编辑:程序博客网 时间:2024/05/16 12:04

一、高级for循环
①格式:for(数据类型 变量名:被遍历的集合(Collection)或者数组)
{
}
②例子演示(在list、set中对输出简化)

Collection<String> coll=new ArrayList<String>();        coll.add("abc");        coll.add("a");        coll.add("cc");        for(String s:coll) {            System.out.println(s);        }

③对集合进行遍历,只能获取元素,但是不能对集合进行操作。
迭代器除了遍历,还可以remove集合中元素的动作。
如果使用ListIterator,还可以在遍历过程中对集合进行增删改查操作。

④传统for和高级for有什么区别呢?
高级for有一个局限性,必须有被遍历的目标

⑤建议是:在遍历数组时还是使用传统方式,因为传统for可以定义脚标,可对脚标的元素或者脚标进行操作
在map集合中用foreach简化

HashMap<Integer,String> hm=new HashMap<Integer,String>();        hm.put(1, "a");        hm.put(2, "abc");        hm.put(3, "c");        //第一种方法简化        Set<Integer> ks=hm.keySet();        for(Integer i:ks) {            sop(hm.get(i));        }        //第二种方法原        Set<Map.Entry<Integer, String>> s3=hm.entrySet();        Iterator<Map.Entry<Integer, String>> it3=s3.iterator();        while(it3.hasNext()) {            Map.Entry<Integer, String> me=it3.next();            sop("键:"+me.getKey()+"   值:"+me.getValue());        }        //第二种方法简化        for(Map.Entry<Integer,String> me : hm.entrySet())        {            System.out.println(me.getKey()+"------"+me.getValue());        }

二、可变参数
在重载函数中,有种形式,只是参数个数不同,参数类型等都是相同的,写重载是比较麻烦的。可以将数据放入数组中,这样写一个方法,形式参数为数组,这样可以简化书写。但是若操作的数据个数不同,还需要创建不同长度的数组,再调用方法,也比较麻烦。
在JDK1.5版本后出现了新方法,以下进行演示:
可变参数其实就是数组参数的简写形式,不用每一次手动的建立数组对象,只要将要操作的元素作为参数传递即可,隐式将这些参数封装成了数组。
形式:数据类型…变量名称
注意事项:在使用这个新特性时,可变参数一定要定义在参数列表的在后面。

public static void main(String[] args) {    show();//0    show(2,3,4);//3    show(2,3,5,6);//4}public static  void show(int...arr) {    System.out.println(arr.length);    //其他语句;}}

三、静态导入
①当类名重名时,要指定具体的包名。
packa/Demo.class
packb\Demo.class
要创建b包下的Demo类对象写法:new packb.Demo();
②当方法重名时,指定具备所属的对象或者类

import java.util.*;public class kebianshuzu {public static void main(String[] args) {    int[] arr= {1,2,3,4};    Arrays.sort(arr);    int index=Arrays.binarySearch(arr, 3);    System.out.println(Arrays.toString(arr));    System.out.println("index="+index); }

以上使用的方法均为静态,每次都得写Arrays类,比较麻烦,要想到静态导入。

import java.util.*;//若没有写static 则导入的全是类import static java.util.Arrays.*;//导入的是Arrays这个类中的所有静态方法import static java.lang.System.*;//简写输出语句public class Demo {public static void main(String[] args) {    int[] arr= {1,2,3,4};    sort(arr);    int index=binarySearch(arr, 3);    out.println(Arrays.toString(arr));    out.println("index="+index);

Arrays.toString(arr):不能省略Arrays,原因是Demo类默认继承了Object类,其有toString命名的方法,Arrays中也有该名称的方法,所以方法名重名,要指定具备的类名或者对象名。

阅读全文
0 0
原创粉丝点击