首頁 > 軟體

Java中包裝類和Arrays類的詳細介紹

2022-12-15 14:03:45

包裝類

包裝類其實就是8種基本資料型別對應的參照型別。

基本資料型別參照資料型別
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean

為什麼需要包裝類?

Java為了實現一切皆物件,為8種基本型別提供了對應的參照型別。

後面的集合和泛型其實也只能支援包裝型別,不支援基本資料型別。

自動裝箱:

基本型別的資料和變數可以直接賦值給包裝型別的變數。

public static void main(String[] args) {
    int num1 = 10;

    // 自動裝箱(將int基本資料類變數賦值給包裝型別變數)
    Integer res1 = num1;
    System.out.println(res1);
}

自動拆箱:

包裝型別的變數可以直接賦值給基本資料型別的變數。

public static void main(String[] args) {
    Integer num2 = 100;

    // 自動拆箱(將包裝型別變數賦值給基本型別變數)
    int res2 = num2;
    System.out.println(res2);
}

包裝類的特有功能:

包裝類的變數的預設值可以是null,容錯率更高, 而基本型別不可以。

public static void main(String[] args) {
    Integer num3 = null;
}

可以把基本型別的資料轉換成字串型別(用處不大)

  • 呼叫toString()方法得到字串結果。
  • 或者呼叫Integer.toString(基本型別的資料)。
public static void main(String[] args) {
    Integer number = 100;
    // 方式一
    String result1 = number.toString();
  	// 方式二
  	String result2 = Integer.toString(101);
    // 方式三: 最簡單常用
    String result3 = number + "";
  
    System.out.println(result1 + 1); // 1001
    System.out.println(result2 + 1); // 1011
    System.out.println(result3 + 2); // 1002
}

可以把字串型別的數值轉換成真實的資料型別(非常有用)

  • teger.parseInt(“字串型別的整數”)
  • Double.parseDouble(“字串型別的小數”)。
public static void main(String[] args) {
    String strNum1 = "123";
    String strNum2 = "12.123";

    // 字串轉整數
    int intNum = Integer.parseInt(strNum1);
    // 字串轉小數
    double doubleNum = Double.parseDouble(strNum2);

    System.out.println(intNum + 1); // 124
    System.out.println(doubleNum + 1); // 13.123
}

將字串型別的數位轉為真實的資料, 我們也可以呼叫包裝類的valueOf方法

public static void main(String[] args) {
    String strNum1 = "123";
    String strNum2 = "12.123";

    // 字串轉整數
    int intNum = Integer.valueOf(strNum1);
    // 字串轉小數
    double doubleNum = Double.valueOf(strNum2);

    System.out.println(intNum + 1); // 124
    System.out.println(doubleNum + 1); // 13.123
}

小結:

包裝類是什麼,作用是什麼?

基本資料型別對應的參照型別,實現了一切皆物件。

後期集合和泛型不支援基本型別,只能使用包裝類。

包裝類有哪些特殊功能?

可以把基本型別的資料轉換成字串型別(用處不大)

可以把字串型別的數值轉換成真實的資料型別(非常有用)

Arrays類

Arrays類的概述

陣列操作工具類,專門用於運算元組元素的。

Arrays類的常用API

方法名說明
toString(型別[] a)返回陣列的內容(字串形式)
sort(型別[] a)對優質的陣列預設進行升序排序
sort(型別[] a, Comparator<? super T> c)使用比較器物件自定義排序
binarySearch(int[] a, int key)二分搜尋陣列中的資料,存在返回索引,不存在返回-1

toString方法

public static void main(String[] args) {
    int[] arr = {10, 20, 30, 40, 0, 100};

    // 返回陣列內容
    String res = Arrays.toString(arr);
    System.out.println(res); // [10, 20, 30, 40, 0, 100]
}

sort方法

public static void main(String[] args) {
    int[] arr = {20, 10, 900, 40, 0, 100};

    // 升序排序
    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr)); // [0, 10, 20, 40, 100, 900]
}

binarySearch方法, 二分查詢法搜尋陣列中的資料, 找到返回索引, 找不到返回-1

注意: 前提被查詢的陣列必須是排好序的

public static void main(String[] args) {
    int[] arr = {20, 10, 900, 40, 0, 100};
  
    // 升序排序
    Arrays.sort(arr);
    // 查詢陣列
    int index = Arrays.binarySearch(arr, 10);
    System.out.println(index); // 1
}

sort方法自定義規則:

sort方法第二個引數是Comparator, 設定Comparator介面對應的比較器物件,可以來自己客製化比較規則。

注意: 自定義比較器物件只支援參照型型別的排序

如果認為左邊資料大於右邊資料, 返回正整數

如果認為左邊資料小於右邊資料, 返回負整數

如果認為左邊資料等於右邊資料, 返回0

預設的升序是o1 - o2; 降序是o2 - o1

public static void main(String[] args) {
    // 只支援參照型別, 因此定義包裝類資料型別 
    Integer[] arr = {10, 0, 30, 50, 100, 67};

    // 呼叫sort方法, 降序
    Arrays.sort(arr, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    });

    System.out.println(Arrays.toString(arr)); // [100, 67, 50, 30, 10, 0]
}

總結

到此這篇關於Java中包裝類和Arrays類的詳細介紹的文章就介紹到這了,更多相關Java 包裝類和Arrays類內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com