Java基础:基本数据类型包装类
1. 基本類型包裝類概述
為了方便操作基本數據類型值,將其封裝成了對象,在對象中定義了屬性和行為豐富了該數據的操作。用于描述該對象的類就稱為基本數據類型對象包裝類。
- 將基本數據類型封裝成對象的好處在于可以在對象中定義更多的功能方法操作該數據。
- 常用的操作之一:用于基本數據類型與字符串之間的轉換。
- 基本類型和包裝類的對應:Byte,Short,Integer,Long,Float,Double,Character,Boolean
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
2. 基本數據類型包裝類應用
該包裝對象主要用于基本類型和字符串之間的轉換
2.1 基本類型 → 字符串
- 基本類型數值+”“
- 用String類中的靜態方法valueOf(基本類型數值);
2.2 字符串 → 基本類型
使用包裝類中的靜態方法xxx parseXxx(“xxx”);
- int parseInt(String str);
- long parseLong(String str);
- boolean parseBoolean(String str);
- 只有Character沒有parse方法。
如果字符串被Integer進行對象的封裝,可使用另一個非靜態的方法,intValue。
將一個Integer對象轉成基本數據類型值。
用Integer的靜態方法valueOf(String s);
3. Integer類
3.1 Integer類概述
Integer 類在對象中包裝了一個基本類型 int 的值
該類提供了多個方法,能在 int 類型和 String 類型之間互相轉換,還提供了處理 int 類型時非常有用的其他一些常量和方法
3.2 構造方法
public Integer(int value)
public Integer(String s)
PS:這個字符串必須是由數字字符組成
3.3 int類型和String類型的相互轉換
| int | intValue() | 以 int 類型返回該 Integer 的值 |
| int | parseInt(String s) | 將字符串參數作為有符號的十進制整數進行解析 |
| String | toString(int i) | 返回一個表示指定整數的 String 對象 |
| Integer | valueOf(int i) | 返回一個表示指定的 int 值的 Integer 實例 |
| Integer | valueOf(String s) | 返回保存指定的 String 的值的 Integer 對象 |
代碼示例:
package cn.itcast_03; /** int類型和String類型的相互轉換* * int -- String* String.valueOf(number)* * String -- int* Integer.parseInt(s)*/ public class IntegerDemo { public static void main(String[] args) { // int -- String int number = 100; // 方式1 String s1 = "" + number; System.out.println("s1:" + s1); // 方式2 String s2 = String.valueOf(number); System.out.println("s2:" + s2); // 方式3 // int -- Integer -- String Integer i = new Integer(number); String s3 = i.toString(); System.out.println("s3:" + s3); // 方式4 // public static String toString(int i) String s4 = Integer.toString(number); System.out.println("s4:" + s4); System.out.println("-----------------"); // String -- int String s = "100"; // 方式1 // String -- Integer -- int Integer ii = new Integer(s); // public int intValue() int x = ii.intValue(); System.out.println("x:" + x); //方式2 //public static int parseInt(String s) int y = Integer.parseInt(s); System.out.println("y:"+y); } }運行結果:
3.4 常用的基本進制轉換
| String | toBinaryString(int i) | 以二進制(基數 2)無符號整數形式返回一個整數參數的字符串表示形式 |
| String | toOctalString(int i) | 以八進制(基數 8)無符號整數形式返回一個整數參數的字符串表示形式 |
| String | toHexString(int i) | 以十六進制(基數 16)無符號整數形式返回一個整數參數的字符串表示形式 |
3.5 十進制轉換成其他進制
| String | toBinaryString(int i) | 十進制轉換成二進制 |
| String | toOctalString(int i) | 十進制轉換成八進制 |
| String | toHexString(int i) | 十進制轉換成十六進制 |
| String | toString(int i,int radix) | 十進制轉換成任何進制 |
3.6 其他進制到十進制
public static int parseInt(String s,int radix)
代碼示例:
package cn.itcast_04; /** 常用的基本進制轉換* public static String toBinaryString(int i)* public static String toOctalString(int i)* public static String toHexString(int i)* * 十進制到其他進制* public static String toString(int i,int radix)* 由這個我們也看到了進制的范圍:2-36* 為什么呢?0,...9,a...z* * 其他進制到十進制* public static int parseInt(String s,int radix)*/ public class IntegerDemo { public static void main(String[] args) { // 十進制到二進制,八進制,十六進制 System.out.println(Integer.toBinaryString(100)); System.out.println(Integer.toOctalString(100)); System.out.println(Integer.toHexString(100)); System.out.println("-------------------------"); // 十進制到其他進制 System.out.println(Integer.toString(100, 10)); System.out.println(Integer.toString(100, 2)); System.out.println(Integer.toString(100, 8)); System.out.println(Integer.toString(100, 16)); System.out.println(Integer.toString(100, 5)); System.out.println(Integer.toString(100, 7)); System.out.println(Integer.toString(100, -7)); System.out.println(Integer.toString(100, 70)); System.out.println(Integer.toString(100, 1)); System.out.println(Integer.toString(100, 17)); System.out.println(Integer.toString(100, 32)); System.out.println(Integer.toString(100, 37)); System.out.println(Integer.toString(100, 36)); System.out.println("-------------------------"); //其他進制到十進制 System.out.println(Integer.parseInt("100", 10)); System.out.println(Integer.parseInt("100", 2)); System.out.println(Integer.parseInt("100", 8)); System.out.println(Integer.parseInt("100", 16)); System.out.println(Integer.parseInt("100", 23)); //NumberFormatException //System.out.println(Integer.parseInt("123", 2)); } }運行結果:
3.7 自動拆裝箱
package cn.itcast_05; /** JDK5的新特性* 自動裝箱:把基本類型轉換為包裝類類型* 自動拆箱:把包裝類類型轉換為基本類型* * 注意一個小問題:* 在使用時,Integer x = null;代碼就會出現NullPointerException。* 建議先判斷是否為null,然后再使用。*/ public class IntegerDemo { public static void main(String[] args) { // 定義了一個int類型的包裝類類型變量i // Integer i = new Integer(100); Integer ii = 100; ii += 200; System.out.println("ii:" + ii); // 通過反編譯后的代碼 // Integer ii = Integer.valueOf(100); //自動裝箱 // ii = Integer.valueOf(ii.intValue() + 200); //自動拆箱,再自動裝箱 // System.out.println((new StringBuilder("ii:")).append(ii).toString()); Integer iii = null; // NullPointerException if (iii != null) { iii += 1000; System.out.println(iii); } } }4. BigInteger
BigInteger:可以讓超過Integer范圍內的數據進行運算。超大整數相加的問題
| add(BigInteger val) | 加 |
| subtract(BigInteger val) | 減 |
| multiply(BigInteger val) | 乘 |
| divide(BigInteger val) | 除 |
| divideAndRemainder(BigInteger val) | 返回商和余數的數組 |
| BigInteger(String val) | 構造方法 |
5. BigDecimal
不可變的、任意精度的有符號十進制數。由于在運算的時候,float類型和double很容易丟失精度,演示案例。所以,為了能精確的表示、計算浮點數,Java提供了BigDecimal
| BigDecimal(String val) | 構造方法 |
| add(BigDecimal augend) | 加 |
| subtract(BigDecimal subtrahend) | 減 |
| multiply(BigDecimal multiplicand) | 乘 |
| divide(BigDecimal divisor) | 除 |
| divide(BigDecimal divisor,int scale,int roundingMode) | 商、幾位小數、如何取舍 |
6. Character類
6.1 Character類概述
Character 類在對象中包裝一個基本類型 char 的值,此外,該類提供了幾種方法,以確定字符的類別(小寫字母,數字,等等),并將字符從大寫轉換成小寫,反之亦然
6.2 構造方法
public Character(char value)
6.3 常用方法
| isUpperCase(char ch) | 判斷是否是大寫 |
| isLowerCase(char ch) | 判斷是否是小寫 |
| isDigit(char ch) | 判斷是否是數字 |
| char toUpperCase(char ch) | 轉換成大寫 |
| char toLowerCase(char ch) | 轉換成小寫 |
代碼示例:
package cn.itcast_02; /** public static boolean isUpperCase(char ch):判斷給定的字符是否是大寫字符* public static boolean isLowerCase(char ch):判斷給定的字符是否是小寫字符* public static boolean isDigit(char ch):判斷給定的字符是否是數字字符* public static char toUpperCase(char ch):把給定的字符轉換為大寫字符* public static char toLowerCase(char ch):把給定的字符轉換為小寫字符*/ public class CharacterDemo { public static void main(String[] args) { // public static boolean isUpperCase(char ch):判斷給定的字符是否是大寫字符 System.out.println("isUpperCase:" + Character.isUpperCase('A')); System.out.println("isUpperCase:" + Character.isUpperCase('a')); System.out.println("isUpperCase:" + Character.isUpperCase('0')); System.out.println("-----------------------------------------"); // public static boolean isLowerCase(char ch):判斷給定的字符是否是小寫字符 System.out.println("isLowerCase:" + Character.isLowerCase('A')); System.out.println("isLowerCase:" + Character.isLowerCase('a')); System.out.println("isLowerCase:" + Character.isLowerCase('0')); System.out.println("-----------------------------------------"); // public static boolean isDigit(char ch):判斷給定的字符是否是數字字符 System.out.println("isDigit:" + Character.isDigit('A')); System.out.println("isDigit:" + Character.isDigit('a')); System.out.println("isDigit:" + Character.isDigit('0')); System.out.println("-----------------------------------------"); // public static char toUpperCase(char ch):把給定的字符轉換為大寫字符 System.out.println("toUpperCase:" + Character.toUpperCase('A')); System.out.println("toUpperCase:" + Character.toUpperCase('a')); System.out.println("-----------------------------------------"); // public static char toLowerCase(char ch):把給定的字符轉換為小寫字符 System.out.println("toLowerCase:" + Character.toLowerCase('A')); System.out.println("toLowerCase:" + Character.toLowerCase('a')); } }6.4 練習
代碼示例:統計一個字符串中大寫字母字符,小寫字母字符,數字字符出現的次數。(不考慮其他字符)
package cn.itcast_03; import java.util.Scanner; /** 統計一個字符串中大寫字母字符,小寫字母字符,數字字符出現的次數。(不考慮其他字符)* * 分析:* A:定義三個統計變量。* int bigCont=0;* int smalCount=0;* int numberCount=0;* B:鍵盤錄入一個字符串。* C:把字符串轉換為字符數組。* D:遍歷字符數組獲取到每一個字符* E:判斷該字符是* 大寫 bigCount++;* 小寫 smalCount++;* 數字 numberCount++;* F:輸出結果即可*/ public class CharacterTest { public static void main(String[] args) { // 定義三個統計變量。 int bigCount = 0; int smallCount = 0; int numberCount = 0; // 鍵盤錄入一個字符串。 Scanner sc = new Scanner(System.in); System.out.println("請輸入一個字符串:"); String line = sc.nextLine(); // 把字符串轉換為字符數組。 char[] chs = line.toCharArray(); // 歷字符數組獲取到每一個字符 for (int x = 0; x < chs.length; x++) { char ch = chs[x]; // 判斷該字符 if (Character.isUpperCase(ch)) { bigCount++; } else if (Character.isLowerCase(ch)) { smallCount++; } else if (Character.isDigit(ch)) { numberCount++; } } // 輸出結果即可 System.out.println("大寫字母:" + bigCount + "個"); System.out.println("小寫字母:" + smallCount + "個"); System.out.println("數字字符:" + numberCount + "個"); } }運行結果:
總結
以上是生活随笔為你收集整理的Java基础:基本数据类型包装类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础:反射
- 下一篇: Java基础:动态代理