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

    }
}
發佈了25 篇原創文章 · 獲贊 33 · 訪問量 5958
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章