一、高级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中也有该名称的方法,所以方法名重名,要指定具备的类名或者对象名。