JavaEE学习日志持续更新----> 必看!JavaEE学习路线(文章总汇)
可变参数
JDK1.5之后的新特性
作用:当我们定义方法的时候,方法参数的数据类型已经确定,但是参数的个数不确定,就可以使用可变参数
格式
修饰符 返回值类型 方法名(数据类型...变量名){
方法体;
}
底层原理
数据类型…变量名,传递参数个数可以是任意个(0,1,2,…n),会根据传递参数的个数,创建一个对应的数字,来存储这些参数,可以把可变参数看成一个数组,只是这个数组会根据参数个数产生变化
示例
public class Demo01 {
public static void main(String[] args) {
//int sum = getSum();
//int sum = getSum(10);
//int sum = getSum(10,20);
int sum = getSum(10,20,30,40,50,60,70,80,90,100);
System.out.println(sum);
}
//getSum(),会创建一个长度为0的数组,存储参数int[] arr = new int[]{}
//getSum(10),会创建一个长度为1的数组,存储参数int[] arr = new int[]{10}
//getSum(10,20),会创建一个长度为2的数组,存储参数int[] arr = new int[]{10,20}
//getSum(10,20,30,40,50,60,70,80,90,100),会创建一个长度为10的数组,存储参数int[] arr = new int[]{10,20,30,40,50,60,70,80,90,100}
private static int getSum(int... arr) {
//System.out.println(arr);//[I@5fd0d5ae
//System.out.println(arr.length);
//定义一个变量,初始值为0,记录累加求和
int sum = 0;
for (int i : arr) {
//累加和求
sum += i;
}
return sum;
}
}
注意事项
- 一个参数列表中,只能包含一个可变参数
public static void method(int...a,int...b){}//报错
- 参数列表中有多个参数,可变参数需要写在末尾
public static void method(int a,String b,double d,int...arr){}
- 可变参数终极写法
public static void method(Object...o){}
debug断点调试
作用:
- 查找程序执行的流程
- 调试程序运行过程中出现的一些问题
使用步骤:
- 在行号的左边,鼠标左键单击增加一个断点
- 右键debug执行
- 程序就会停止到添加的第一个断点处
快捷键:
- F8:逐行执行代码
- F7:进入到方法中
- Shift+F8:跳出方法
- F9:跳到下一个断点,没有下一个断点,程序结束
- Ctrl+F2:停止debug,也会停止程序
- console:切换到控制台
- variables:显示程序中所有变量的区域
静态导入
JDK1.5新特性,静态导入
作用:减少开发的代码量
标准写法:导入包的时候才能使用
import static java.lang.System.out;
最末尾(out),必须是一个静态成员
示例
import java.util.ArrayList;
import static java.util.Collections.sort;
import static java.lang.System.out;
public class Demo01 {
public static void main(String[] args) {
out.println(1);//System.out.println(1);
out.println(2);
ArrayList<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
sort(list);//Collections.sort(list);
out.println(list);
}
}
集合嵌套
集合可以随意嵌套(Map可以嵌套Collection,Collection也可嵌套Map)
示例
public class Demo01 {
public static void main(String[] args) {
//定义一个存储省份名称和城市的Map集合
Map<String, ArrayList<String>> map = new HashMap<>();
//创建存储城使的ArrayList<String>集合
ArrayList<String> hb = new ArrayList<>();
hb.add("石家庄");
hb.add("张家口");
hb.add("承德");
hb.add("邯郸");
ArrayList<String> nmg = new ArrayList<>();
nmg.add("呼和浩特");
nmg.add("包头");
nmg.add("赤峰");
nmg.add("锡林郭勒");
ArrayList<String> gd = new ArrayList<>();
gd.add("深圳");
gd.add("广州");
gd.add("东莞");
gd.add("赤峰");
//添加到map中
map.put("河北省",hb);
map.put("内蒙古",nmg);
map.put("广东省",gd);
//遍历map集合:keySet+增强for
Set<String> set = map.keySet();
for (String key : set) {
//通过key获取value
ArrayList<String> value = map.get(key);
//遍历ArrayList集合
for (String cityName : value) {
System.out.println(key+"-->"+cityName);
}
}
}
}