1、foreach
foreach语句格式:
for(类型 变量 : Collection集合 | 数组)
{
}
下图中第7行把list里面的元素依次存放到String类型的变量s中,进行逐个打印。
public static void demo()
{
List<String> list = new ArrayList<String>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
for(String s : list)
{
System.out.println(s);
/*
* abc1
* abc2
* abc3
*/
}
int[] arr = {3, 1, 6, 9};
for(int i : arr)
{
System.out.println(i);
/*3
1
6
9*/
}
}
传统for和高级for的区别?
(1)传统for可以对语句执行很多次,因为可以定义控制循环的增量和条件
高级for是一中简化形式,它必须有被遍历的目标,该目标要么是数组,要么是Colection单列结合
(2)对于数组的遍历如果仅仅是获取数组中的元素,可以使用高级for
如果要对数组的角标进行操作建议使用传统for
2、函数可变参数
如下图中第14行,用 ... 表示省略的多个参数。在调用函数时可以直接传递多个参数而不需要建立数组。
public static void main(String[] args)
{
int sum = newAdd(5, 1, 4, 7, 3);
System.out.println("sum = " + sum);
}
/*
* 函数的可变参数
* 其实就是一个数组,但是接收的是数组的元素
* 自动将这些元素封装成数组,简化了调用者的书写
*
* 注意:可变参数类型,必须定义在参数列表的结尾处
*/
public static int newAdd(int... arr)
{
int sum = 0;
for(int i : arr)
{
sum = sum + i;
}
return sum;
}
3、静态导入
如下图中第1行静态导入了Collections.sort,所以在第14行调用sort排序时就不用再加Colletcions所属了。
第2行中导入了System.*,*表示所有,所以第13和第15行输出是就省略了System。
import static java.util.Collections.sort;//静态导入,其实导入的是类中的静态成员
import static java.lang.System.*;
public class StaticImportDemo
{
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("abc5");
list.add("abc2");
list.add("abc3");
out.println(list);//[abc5, abc2, abc3]
sort(list);
out.println(list);//[abc2, abc3, abc5]
}
}