Java学习日志(八): 可变参数,debug断点调试,静态导入,集合嵌套

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;
    }
}

注意事项

  1. 一个参数列表中,只能包含一个可变参数
public static void method(int...a,int...b){}//报错
  1. 参数列表中有多个参数,可变参数需要写在末尾
public static void method(int a,String b,double d,int...arr){}
  1. 可变参数终极写法
public static void method(Object...o){}

debug断点调试

作用:

  1. 查找程序执行的流程
  2. 调试程序运行过程中出现的一些问题

使用步骤:

  1. 在行号的左边,鼠标左键单击增加一个断点
  2. 右键debug执行
  3. 程序就会停止到添加的第一个断点处

快捷键:

  • 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);
            }
        }

    }
}
发布了14 篇原创文章 · 获赞 15 · 访问量 1619

猜你喜欢

转载自blog.csdn.net/Sakuraaaaaaa/article/details/104181201
今日推荐