1. 程式人生 > 實用技巧 >Java 基礎 - Java核心類庫 - 包裝類與數值相關類

Java 基礎 - Java核心類庫 - 包裝類與數值相關類

Java 基礎 - Java核心類庫 - 包裝類與數值相關類

目錄

1 Java常用包

Java.lang 包

  • 是Java語言的核心包,並且該包中的所有內容由Java虛擬機器自動匯入。 如:System類、String類、...

Java.util 包

  • 是Java語言的工具包,裡面提供了大量工具類以及集合類等。 如:Scanner類、Random類、List集合、...

Java.io 包

  • Java語言中的輸入輸出包,裡面提供了大量讀寫檔案相關的類等。 如:FileInputStream類、FileOutputStream類、...

Java.net 包

  • Java語言中的網路包,裡面提供了大量網路程式設計相關的類等。 如:ServerSocket類、Socket類、...

Java.sql 包

  • Java語言中的資料包,裡面提供了大量操作資料庫的類和介面等。 如:DriverManager類、Connection介面、…

2 Object 類

2.1 基本概念

  • Java.lang.Object 類為根類,所有類都是該類直接或間接的子類(有父類的類為間接繼承)
  • 自定義類時沒有extends宣告父類,其父類為Java.lang.Object
  • Object類的方法被子類預設繼承

2.2 常用方法

Object()

  • 無參構造方法

boolean equals(Object obj)

  • 判斷呼叫物件和引數物件是否相等
  • 預設比較兩個物件的地址是否相等,與 == 結果一直
  • 若要比較物件的內容需要重寫該方法
    • 如果再重寫方法中進行內容的計較,引數obj需要先進行強制型別轉換再呼叫方法比較具體的值
    • 處理傳入引數為null的特殊情況,引數為null直接返回false 或兩個引數getClass方法的值 != 直接返回false
    • 處理傳入引數與呼叫物件 == 即地址相同的情況,直接返回true
  • 該方法重寫後需要重寫hashCode方法來保證結果的一致性
    • 若重寫該方法來比較內容且內容不是基本資料型別而是引用資料型別(如String),在自定義equals方法中呼叫引用資料型別重寫後的equals方法
    • 重寫hashCode方法時也是呼叫引用資料型別的hashCode方法來進一步重寫

int hashCode()

  • 獲取呼叫物件的雜湊碼值(記憶體地址編號)
  • 若兩物件equals方法相等,各自呼叫hashCode方法的結果必須相等
  • 如兩物件equals方法不相等,各自呼叫hasCode方法的結果不相等

String toString()

  • 獲取呼叫物件的字串形式
  • 預設返回值為:包名.類名@雜湊碼值的十六進位制
  • 當print和println列印引用或字串拼接引用時都會自動呼叫該方法

Class<?> getClass()

  • 返回呼叫物件執行時的Class例項,反射機制使用

3 包裝類

3.1 概念和常見包裝類

需求需要將基本資料型別變數打包處理成物件

常見包裝類

  • java.lang.Byte byte

  • java.lang.Short short

  • java.lang.Integer int

  • java.lang.Long long

  • java.lang.Float float

  • java.lang.Double double

    以上類都繼承 java.lang.Number 類 (抽象類)

  • java.lang.Boolean boolean

  • java.lang.Character char

3.1.1 Integer 類

概念:

  • java.lang.Integer類內部包裝了一個int型別的變數作為成員變數
  • 主要用於實現對int型別的包裝並 提供int型別到String類之間的轉換等方法

常用常量:

public static final int MAX_VALUE

  • 表示int型別可以描述的最大值,即2^31-1

public static final int MIN_VALUE

  • 表示int型別可以描述的最小值,即-2^31

public static final int SIZE

  • 表示int型別採用二進位制補碼形式的位數

public static final int BYTES

  • 表示int型別所佔的位元組個數

public static final Class TYPE

  • 表示int型別的Class例項

構造方式:

Java 9 之前

// 2種構造方式
Integer i = new Integer(123); //引數型別為int
Integer i = new Integer("345"); //引數型別為String

或 valueOf()

Java9之後 new Integer() 的方式過時

Integer i = Integer.valueOf(123); //引數型別為int
Integer i = Integer.valueOf("345"); //引數型別為String
3.1.1.1 Integer 類常用方法
方法 功能
int intValue() 獲取呼叫物件中的整數值並返回
static Integer valueOf(int/String) 根據指定引數得到Integer型別物件
boolean equals(Object obj) 比較呼叫物件與引數指定的物件是否相等
String toString() 返回描述呼叫物件數值的字串形式
static int parseInt(String s) 將字串型別轉換為int型別並返回
static String toString(int i) 獲取引數指定整數的十進位制字串形式
static String toBinaryString(int i) 獲取引數指定整數的二進位制字串形式
static String toHexString(int i) 獲取引數指定整數的十六進位制字串形式
static String toOctalString(int i) 獲取引數指定整數的八進位制字串形式
3.1.1.2 裝箱和拆箱

裝箱:通過valueOf()從int型別到Integer型別的轉換,將int型別的變數作為Integer類的成員變數,該打包過程叫做裝箱

拆箱:通過intValue()從Integer型別到int型別的轉換叫做拆箱

從Java 5 開始增加了自動裝箱和自動拆箱機制

  • 直接通過賦值運算子實現自動裝箱和拆箱
Integer i = 500; //自動裝箱
int num = i; //自動拆箱

自動裝箱池

Integer 類內部提供了自動裝箱池技術,將 -128 到 127 之間的整數裝箱, 使用時直接取用自動裝箱池中的物件

Integer i1 = 127;
Integer i2 = 127;
i1 == i2 // true 裝箱池中的獲取的物件地址相同
Integer i3 = new Integer(127);
Integer i4 = new Integer(127);
i3 == i4 // false 
3.1.2 Double 類

概念:

  • java.lang.Double型別內部包裝了一個double型別的變數作為成員變數
  • 主要用於實現對double 型別的包裝並提供double型別到String類之間的轉換等方法

常用常量:

  • public static final int SIZE
    • 表示double型別的二進位制位數
  • public static final int BYTES
    • 表示double型別的位元組個數
  • public static final Class TYPE
    • 表示double型別的Class例項

常用方法:

方法 說明
double doubleValue() 獲取呼叫物件中的浮點資料並返回
static Double valueOf(double/String) 根據指定引數得到Double型別物件
boolean equals(Object obj) 比較呼叫物件與引數指定的物件是否相等
String toString() 返回描述呼叫物件數值的字串形式
static double parseDouble(String s) 將字串型別轉換為double型別並返回
boolean isNaN() 判斷呼叫物件的數值是否為非數字
3.1.3 Boolean 類

基本概念:

  • java.lang.Boolean型別內部包裝了一個boolean型別的變數作為成員變數
  • 主要用於實現對 boolean型別的包裝並提供boolean型別到String類之間的轉換等方法

常用常量:

  • public static final Boolean FALSE
    • 對應基值為false的物件
  • public static final Boolean TRUE
    • 對應基值為true的物件
  • public static final Class TYPE
    • 表示boolean型別的Class例項

常用方法:

方法 說明
boolean booleanValue() 獲取呼叫物件中的布林數值並返回
static Boolean valueOf(boolean/String) 根據指定引數得到Boolean型別物件
boolean equals(Object obj) 比較呼叫物件與引數指定的物件是否相等
String toString() 返回描述呼叫物件數值的字串形式
static boolean parseBoolean(String s) 將字串型別轉換為boolean型別並返回
3.1.4 Character 類

基本概念:

  • java.lang.Character型別內部包裝了一個char型別的變數作為成員變數
  • 主要用於實現對char型別 的包裝並提供字元類別的判斷和轉換等方法

常用的常量:

  • public static final int SIZE
    • 表示char型別的二進位制位數
  • public static final int BYTES
    • 表示char型別的位元組個數
  • public static final Class TYPE
    • 表示char型別的Class例項

常用的方法:

方法 說明
char charValue() 獲取呼叫物件中的字元資料並返回
static Character valueOf(char c) 根據引數指定字元資料得到Character型別物件
boolean equals(Object obj) 比較呼叫物件與引數指定的物件是否相等
String toString() 返回描述呼叫物件數值的字串形式
static boolean isUpperCase(char ch) 判斷引數指定字元是否為大寫字元
static boolean isLowerCase(char ch) 判斷引數指定字元是否為小寫字元
static boolean isDigit(char ch) 判斷引數指定字元是否為數字字元
static char toUpperCase(char ch) 將引數指定的字元轉換為大寫字元
static char toLowerCase(char ch) 將引數指定的字元轉換為小寫字元
3.1.5 包裝類小結

基本資料型別轉換為對應包裝類的方式

  • 呼叫包裝類的構造方法或靜態方法即可

獲取包裝類物件中基本資料型別變數數值的方式

  • 呼叫包裝類中的xxxValue方法即可

字串轉換為基本資料型別的方式 (Character 類除外)

  • 呼叫包裝類中的parseXxx方法即可

3.2 數學處理類

3.2.1 Math 類

概念:

  • java.lang.Math類主要用於提供執行數學運算的方法,如:對數,平方根

常用方法:

方法 說明
static int max(int a, int b) 返回兩個引數中的最大值
static int min(int a, int b) 返回兩個引數中的最小值
static double pow(double a, double b) 返回a的b次方
static int abs(int a) 返回引數指定數值的絕對值
static long round(double a) 返回引數四捨五入的結果
static double sqrt(double a) 返回引數的平方根
static double random() 返回0.0到1.0的隨機數
3.2.2 BigDecimal 類

概念:

  • 由於float型別和double型別在運算時可能會有誤差,若希望實現精確運算則藉助 java.math.BigDecimal型別加以描述
  • 該類遇到無線小數會報錯,需要指定攝入方式
    • HALF_UP 學校常用,向最近的舍入,如果相等則向上舍入
    • HALF_DOWN 向最近的舍入,如果相等則向下舍入
    • HALF_EVEN 像最近舍入,如果相等向偶數舍入
RoundingMode.HALF_UP

常用方法:

方法 說明
BigDecimal(String val) 根據引數指定的字串來構造物件
BigDecimal add(BigDecimal augend) 用於實現加法運算
BigDecimal subtract(BigDecimal subtrahend) 用於實現減法運算
BigDecimal multiply(BigDecimal multiplicand) 用於實現乘法運算
BigDecimal divide(BigDecimal divisor) 用於實現除法運算
3.2.3 BigInteger 類

基本概念:

  • 若希望表示比long類型範圍還大的整數資料,則需要藉助java.math.BigInteger型別描述

常用方法

方法 說明
BigInteger(String val) 根據引數指定的字串來構造物件
BigInteger add(BigInteger val) 用於實現加法運算
BigInteger subtract(BigInteger val) 用於實現減法運算
BigInteger multiply(BigInteger val) 用於實現乘法運算
BigInteger divide(BigInteger val) 用於實現除法運算
BigInteger remainder(BigInteger val) 用於實現取餘運算
BigInteger[] divideAndRemainder(BigInteger val) 用於實現取商和餘數的運算