1. 程式人生 > >Java學習筆記09--靜態匯入 ;增強for迴圈 ;可變引數 ;自動裝箱與自動拆箱;FILE(檔案操作)

Java學習筆記09--靜態匯入 ;增強for迴圈 ;可變引數 ;自動裝箱與自動拆箱;FILE(檔案操作)

∆ 靜態匯入:

  • 靜態匯入的作用: 簡化書寫。

  • 靜態匯入可以作用一個類的所有靜態成員。

  • 靜態匯入的格式:
    import static 包名.類名.靜態的成員;

  • 靜態匯入要注意的事項:
    如果靜態匯入的成員與本類的成員存在同名的情況下,那麼預設使用本類的靜態成員,如果需要指定使用靜態匯入的成員,那麼需要在靜態成員前面加上類名

  • 程式碼

import static java.util.Collections.sort;
import static java.util.Collections.binarySearch;
import static java.util.Collections.max;
import static
java.lang.System.out; public class Demo1 { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); list.add(13); list.add(9); list.add(10); list.add(19); //排序 Collections.sort(list); out
.println("集合的元素:"+ list); out.println("索引值:"+ binarySearch(list,13)); out.println("最大值:"+ max(list)); } public static void sort(ArrayList<Integer> list){ System.out.println("本類 的sort方法....."); } }

∆ 增強for迴圈

  • 增強for迴圈的作用: 簡化迭代器的書寫格式。(注意:增強for迴圈的底層還是使用了迭代器遍歷。)

  • 增強for迴圈的適用範圍: 如果是實現了Iterable介面的物件或者是陣列物件都可以使用增強for迴圈。

  • 增強for迴圈的格式:

    for(資料型別  變數名  :遍歷的目標){

    }

∆ 增強for迴圈要注意的事項:

  • 增強for迴圈底層也是使用了迭代器獲取的,只不過獲取迭代器由jvm完成,不需要我們獲取迭代器而已,所以在使用增強for迴圈變數元素的過程中不準使用集合物件對集合的元素個數進行修改。
  • 迭代器遍歷元素與增強for迴圈變數元素的區別:使用迭代器遍歷集合的元素時可以刪除集合的元素,而增強for迴圈變數集合的元素時,不能呼叫迭代器的remove方法刪除元素。
  • 普通for迴圈與增強for迴圈的區別:普通for迴圈可以沒有變數的目標,而增強for迴圈一定要有變數的目標。

  • 程式碼:

public class Demo2 {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        //新增元素
        set.add("狗娃");
        set.add("狗剩");
        set.add("鐵蛋");
        /*
        //使用迭代器遍歷Set的集合.
        Iterator<String> it  = set.iterator();
        while(it.hasNext()){
            String temp = it.next();
            System.out.println("元素:"+ temp);
            it.remove();
        }
        //使用增強for迴圈解決
        for(String item : set){
            System.out.println("元素:"+ item);
        }
        int[] arr = {12,5,6,1};
        普通for迴圈的遍歷方式
        for(int i =  0 ; i<arr.length ; i++){
            System.out.println("元素:"+ arr[i]);
        }
        //使用增強for迴圈實現
        for(int item :arr){
            System.out.println("元素:"+ item);
        }
        //需求: 在控制檯列印5句hello world.
        for(int i = 0 ; i < 5; i++){
            System.out.println("hello world");
        }
        */
        //注意: Map集合沒有實現Iterable介面,所以map集合不能直接使用增強for迴圈,如果需要使用增強for迴圈需要藉助於Collection
        // 的集合。
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("001","張三");
        map.put("002","李四");
        map.put("003","王五");
        map.put("004","趙六");
        Set<Map.Entry<String, String>> entrys = map.entrySet();
        for(Map.Entry<String, String> entry  :entrys){
            System.out.println("鍵:"+ entry.getKey()+" 值:"+ entry.getValue());
        }
    }
}

∆ 可變引數

  • 需求: 定義一個函式做加法功能(函式做幾個資料 的加法功能是不確定)。

  • 可變引數的格式:

    資料型別... 變數名
  • 可變引數要 注意的細節:

    1. 如果一個函式 的形參使用上了可變引數之後,那麼呼叫該方法的時候可以傳遞引數也可以不傳遞引數。
    2. 可變引數實際上是一個數組物件。
    3. 可變引數必須位於形參中的最後一個引數。
    4. 一個函式最多隻能有一個可變 引數,因為可變引數要位於形參中最後一個位置上。
  • 程式碼示例:

 public class Demo4 {
    public static void main(String[] args) {
        int[] arr = {1,2,45,6,7};
        /*System.out.println(arr);
            add(arr);*/
        add();
    }
    public static void add(int... arr){ //長度是0

        int result = 0;
        for(int item : arr){
            result+=item;
        }
        System.out.println("總和:"+ result);
    }
}

∆ 自動裝箱與自動拆箱

  • 簡單一點說,裝箱就是自動將基本資料型別轉換為包裝器型別;

  • java是面向物件 的語言,任何事物都可以使用類進行描述,sun就使用了
    一些類描述java中八種基本資料型別資料

            基本資料型別       包裝型別
                byte          Byte
                short         Short
                int           Integer
                long          Long 
                float          Float
                double         Double 
                boolean        Boolean 
                char          Character
  • 程式碼示例
public class Demo5 {
    public static void main(String[] args) {
        String str = "12";
        //字串轉換成int型別資料。 可以把字串轉換成對應的數字
        int i = Integer.parseInt(str);
        System.out.println(i+1);
        //把數字轉換成字串
        System.out.println("把整數轉換成對應 的字串:"+Integer.toString(i));

        //把整數轉換成對應的進位制形式
        System.out.println("10的二進位制:"+ Integer.toBinaryString(10));
        System.out.println("10的二進位制:"+ Integer.toBinaryString(10));
        System.out.println("10的十六進位制:"+ Integer.toHexString(10));
        //可以把字串當成對應的進行資料幫你轉換
        String data = "10";
        int a = Integer.parseInt(data, 2);
        System.out.println("a="+a);

        //集合: 集合是可以儲存任意物件型別資料的容器。
        ArrayList list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        //自動裝箱: 自動把java的基本資料型別資料轉換成物件型別資料。
        int temp = 10;  //基本資料型別
        Integer b =temp; //把a儲存的值賦予給b變數。

        //自動拆箱: 把引用型別的資料轉換成基本型別的資料
        Integer c = new Integer(13);
        int d = c; //
        System.out.println(d);

        //引用的資料型別
        Integer e = 128;
        Integer f = 128; 
        System.out.println("同一個物件嗎?"+(e==f)); // Integer類內部維護 了緩衝陣列,該緩衝陣列儲存的-128~127 這些資料在一個數組中。如果你獲取的資料是落入到這個範圍之內的,那麼就直接從該緩衝區中獲取對應的資料。
    }
}