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