目? 錄
一、基本數據類型對應的包裝類
1.概覽
2.說明
二、包裝類
1.最大值與最小值
2.構造方法
3.常用方法(Integer為例)
(1)compare(int x, int y)
(2)max(int a, int b) 和 min(int a, int b)
(3)parseInt(String s)
(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)
(5)valueOf(int i)、valueOf(String s)
三、String、int、Integer 間的相互轉換
四、自動裝箱與自動拆箱
五、整數型常量池
六、BigInteger?
1.說明
2.常用方法
?七、BigDecimal
1.說明
2.其他常用方法?
八、數字格式化
1.說明
2.實例
一、基本數據類型對應的包裝類
1.概覽
基本數據類型 | 包裝數據類型 |
---|---|
byte | java.lang.Byte |
short | java.lang.Short |
int | java.lang.Integer |
long | java.lang.Long |
float | java.lang.Float |
double | java.lang.Double |
boolean | java.lang.Boolean |
char | java.lang.Character |
2.說明
- 包裝類是引用數據類型;
- 基本數據類型對應的包裝類中,前六項數字類型都繼承了 Number 類;
- Number 類提供了 byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue()方法,可以將包裝類型轉換為基本數據類型,該過程稱為拆箱;
- Boolean 的拆箱方法是 booleanValue();
- Character 的拆箱方法是 charValue()。
二、包裝類
1.最大值與最小值
public class PackageTest {public static void main(String[] args) {System.out.println(Byte.MAX_VALUE); // 127System.out.println(Byte.MIN_VALUE); // -128System.out.println(Short.MAX_VALUE); // 32767System.out.println(Short.MIN_VALUE); // -32768System.out.println(Integer.MAX_VALUE); // 2147483647System.out.println(Integer.MIN_VALUE); // -2147483648System.out.println(Long.MAX_VALUE); // 9223372036854775807System.out.println(Long.MIN_VALUE); // -9223372036854775808System.out.println(Float.MAX_VALUE); // 3.4028235E38System.out.println(Float.MIN_VALUE); // 1.4E-45System.out.println(Double.MAX_VALUE); // 1.7976931348623157E308System.out.println(Double.MIN_VALUE); // 4.9E-324}
}
2.構造方法
- 通過構造方法將基本數據類型包裝成引用數據類型,該過程稱為裝箱;
- 若數字中類型不一致,會拋出數字格式化異常;
- jdk 9 之后,被標注已過時。
3.常用方法(Integer為例)
(1)compare(int x, int y)
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.compare(1, 9)); // 輸出:-1System.out.println(Integer.compare(8, 2)); // 輸出:1System.out.println(Integer.compare(5, 5)); // 輸出:0}
}
(2)max(int a, int b) 和 min(int a, int b)
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.max(1, 9)); // 輸出:9System.out.println(Integer.min(1, 9)); // 輸出:1}
}
(3)parseInt(String s)
? ? ? ? 將字符串數字轉換為數字類型。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.parseInt("123")); // 輸出:123System.out.println(Integer.parseInt("123" + 1)); // 輸出:1231System.out.println(Integer.parseInt("123") + 1); // 輸出:124}
}
(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)
? ? ? ? 分別獲取數字 二進制、十六進制、八進制 的字符串表示形式。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.toBinaryString(20)); // 10100System.out.println(Integer.toHexString(20)); // 14System.out.println(Integer.toOctalString(20)); // 24}
}
(5)valueOf(int i)、valueOf(String s)
? ? ? ? 將 基本數據類型 int 或字符串 轉換成 Integer ,且字符串必須是數字字符串,否則會拋出數字格式化異常。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.valueOf(20)); // 輸出:20System.out.println(Integer.valueOf("123")); // 輸出:123}
}
三、String、int、Integer 間的相互轉換
public class PackageTest {public static void main(String[] args) {/*** String ——> int 轉換*/String s1 = "123";int i1 = Integer.parseInt(s1);System.out.println("[ String ——> int 轉換 ]");System.out.println("i1 = " + i1); // 123System.out.println("i1 + 1 = " + (i1 + 1)); // 124/*** int ——> String 轉換*/int i2 = 123;String s2 = i2 + "";System.out.println("[ int ——> String 轉換 ]");System.out.println("s2 = " + s2); // 123System.out.println("s2 + 1 = " + (s2 + 1)); // 1231String s3 = Integer.toString(i2);System.out.println("s3 = " + s3); // 123System.out.println("s3 + 1 = " + (s3 + 1)); // 1231/*** String ——> Integer 轉換*/String s4 = "123";Integer i3 = Integer.valueOf(s4);System.out.println("[ String ——> Integer 轉換 ]");System.out.println("i3 = " + i3); // 123System.out.println("i3 + 1 = " + (i3 + 1)); // 124/*** Integer ——> String 轉換*/Integer i4 = 123;String s5 = i4.toString();System.out.println("[ Integer ——> String 轉換 ]");System.out.println("s5 = " + s5); // 123System.out.println("s5 + 1 = " + (s5 + 1)); // 1231/*** int ——> Integer 轉換*/int i5 = 123;Integer i6 = Integer.valueOf(i5);System.out.println("[ int ——> Integer 轉換 ]");System.out.println("i6 = " + i6); // 123System.out.println("i6 + 1 = " + (i6 + 1)); // 124/*** Integer ——> int 轉換*/Integer i7 = 123;int i8 = i7.intValue();System.out.println("[ Integer ——> int 轉換 ]");System.out.println("i8 = " + i8); // 123System.out.println("i8 + 1 = " + (i8 + 1)); // 124}
}
四、自動裝箱與自動拆箱
????????jdk 5 新增,是編譯階段的功能。
public class Test {public static void main(String[] args) {// 自動裝箱,實際上是 Integer i1 = new Integer(10);Integer i1 = 10;// 自動拆箱,實際上是 int i2 = i1.intValue();int i2 = i1;}
}
五、整數型常量池
public class Test {public static void main(String[] args) {Integer i1 = 127;Integer i2 = 127;System.out.println(i1 == i2); // trueInteger i3 = 128;Integer i4 = 128;System.out.println(i3 == i4); // false}
}
? ? ? ? 為什么會造成這樣的結果呢?
? ? ? ? 因為 [-128,127] 較為常用,為提高效率,Java 提供了整數型常量池。該常量池是一個 Integer 數組,存儲了256個 Integer 引用,只要在這個范圍,直接從整數型常量池中獲取。
六、BigInteger?
1.說明
- 為了解決整數超過 long 最大值的問題,Java提供了一種引用數據類型 java.math.BigInteger;
- 它的父類是 Number 類。
public class Test {public static void main(String[] args) {long l = 999999999999999999L; // long類型最大值System.out.println("l = " + l);BigInteger b = new BigInteger("999999999999999999999999999"); // BigInteger類型System.out.println("b = " + b);}
}
2.常用方法
public class Test {public static void main(String[] args) {BigInteger b1 = new BigInteger("2");BigInteger b2 = new BigInteger("3");BigInteger b3 = new BigInteger("-4");System.out.println("b1 + b2 = " + b1.add(b2)); // 加法System.out.println("b1 - b2 = " + b1.subtract(b2)); // 減法System.out.println("b1 * b2 = " + b1.multiply(b2)); // 乘法System.out.println("b1 / b2 = " + b1.divide(b2)); // 除法System.out.println("b1 % b2 = " + b1.remainder(b2)); // 取余System.out.println("b1 ^ 2 = " + b1.pow(2)); // 冪System.out.println("b1.compareTo(b2) = " + b1.compareTo(b2)); // 比較System.out.println("b1.max(b2) = " + b1.max(b2)); // 取大System.out.println("b1.min(b2) = " + b1.min(b2)); // 取小System.out.println("b3.abs() = " + b3.abs()); // 絕對值System.out.println("b1.sqrt() = " + b1.sqrt()); // 平方根}
}
?七、BigDecimal
1.說明
- 為了解決浮點數超過 double 最大值的問題,Java提供了一種引用數據類型 java.math.BigDecimal;
- 它的父類是 Number 類;
- 常用于財務軟件。
2.其他常用方法?
public class Test {public static void main(String[] args) {BigDecimal b = new BigDecimal("520.1314");System.out.println(b.movePointLeft(1)); // 向左移動一位System.out.println(b.movePointRight(1)); // 向右移動一位}
}
八、數字格式化
1.說明
- java.text.DecimalFormat 類是用來數字格式化的;
- 常用格式:
- 三個數字為一組,每組之間使用逗號間隔,保留兩位小數;
- 三個數字為一組,每組之間使用逗號間隔,保留四位小數,不夠補0。
2.實例
public class Test {public static void main(String[] args) {DecimalFormat df1 = new DecimalFormat("###,###.##");System.out.println(df1.format(5201314.1314)); // 5,201,314.13DecimalFormat df2 = new DecimalFormat("###,###.0000");System.out.println(df2.format(5201314.13)); //5,201,314.1300}
}