一.包裝類:
1.包裝類:java
Java語言是一個面向對象的語言,可是Java中的基本數據類型倒是不面向對象的。基本類型的數據不具有"對象"的特性(沒有成員變量和成員方法能夠調用),所以,java爲每種數據類型分別設計了對應的類,即包裝類。git
基本數據類型 | 對應的包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
floar | Floar |
double | Double |
boolean | Boolean |
(1)全部包裝類都是final類型,所以不能建立他們的子類。
(2)包裝類是不可變類,一個包裝類的對象自建立後,他所包含的基本類型數據就不能被改變。面試
2.包裝類的特色:ide
二.Integer類
1.裝箱和拆箱源碼分析
裝箱:將基本數據類型變爲包裝類對象。
拆箱:將包裝類中包裝的基本數據類型取出。設計
int到Integer | Integer到int |
---|---|
使用Integer類的構造方法 | 調用Integer類的intValue()方法 |
使用Integer類內部的valueOf( )方法 | 自動拆箱(JDK1.5) |
自動裝箱(JDK1.5) |
2.int到nteger類:code
三種方法:
(1)使用Integer類的構造方法
(2)使用Integer類內部的valueOf( )方法
(3)自動裝箱orm
(1)方法1:使用Integer類的構造方法對象
public static void main(String[] args) { //方式1:public Integer(int value) int i= 100; //將int類型的i轉換爲Integer類型的ii Integer ii = new Integer(i); System.out.println("ii:"+ii); //方式2:public Integer(String s) String s = "100"; //String s = "abc";出錯,由於這個字符串必須由數字字符組成。 Integer iii = new Integer(s); System.out.println("iii:"+iii);//100 }
(2)方法2:使用Integer類內部的valueOf方法blog
public static Integer valueOf(int i):將int類型轉換爲Integer類。
Integer i3 = Integer.valueOf(30);
(3)方法3:自動裝箱的方法:
事實上,編譯器自動執行了valueOf方法。
Integer ii = 100;//編譯器自動執行了Integer ii = Integer.valueOf(100)
包裝類 | 裝箱 | 拆箱 |
---|---|---|
Byte | valueOf() | byteValue() |
Short | valueOf() | shortValue() |
Integer | valueOf() | intValue() |
Long | valueOf() | longValue() |
Float | valueOf() | floatValue() |
Double | valueOf() | doubleValue() |
Character | valueOf() | charValue() |
Boolean | valueOf() | booleanValue() |
valueOf源碼分析:
public static Integer valueOf(int i) { assert IntegerCache.high>= 127; if (i >= IntegerCache.low&& i <= IntegerCache.high) return IntegerCache.cache[i+ (-IntegerCache.low)]; return new Integer(i); }
經過查看原碼可知,java針對-128-127之間的數據作了一個數據緩衝池。
若是數據是該範圍內的,每次並不建立新的空間。
若是數據是該範圍內的,就new一個空間
相關面試題:
public static void main(String[] args) { Integer i1 = new Integer(127); Integer i2 = new Integer(127); System.out.println(i1 == i2);//false System.out.println(i1.equals(i2));//true重寫了equals方法,比較的內容 Integer i3 = new Integer(128); Integer i4 = new Integer(128); System.out.println(i3 == i4);//false System.out.println(i3.equals(i4));//true Integer i5 = 128; Integer i6 = 128; System.out.println(i5 == i6);//false System.out.println(i5.equals(i6));//true Integer i7 = 127; Integer i8 = 127; System.out.println(i7 == i8);//true System.out.println(i7.equals(i8));//true
3.Integer類到 int:
(1)調用包裝類的intValue()方法
(2)經過自動拆箱:
public void test2() { Integer i1 = new Integer(14); Float f1 = new Float(12.3F); //1.調用包裝類的XxxValue()方法 int i2 = i1.intValue();//i2 = 14 float f2 = f1.floatValue();//f2 = 12.3 }
//5是基本數據類型,經過自動裝箱變成對象類型。 //編譯器執行了Integer iii = Integer.valueOf(5) Integer iii=5; //自動拆箱,實際上執行了 int iii2 = iii.intValue() int iii2=iii; System.out.println(iii2);
4.int類型數據和String形式之間的相互轉換:
int到String | String到int |
---|---|
字符串的拼接 | String–>Integer–>int |
String類的valueOf()方法 | int parseInt(String s) |
toString(int i) |
public static void main(String[] args) { //int--String把int類型的數據轉化爲字符串的形式 int number = 100; //方式1:字符串的拼接 String s1 = "" + number; System.out.println("s1:"+s1); //方式2:String類的valueOf能夠把任意類型的數據轉換成String類型 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)返回一個表示該 Integer 值的 String 對象。 String s4 = Integer.toString(number); System.out.println("s4:"+s4); //String--int String s ="100"; //方式1 //String--Integer--int //String--Integer Integer ii = new Integer(s); //Integer--int //public int intValue()以 int類型返回該 Integer的值 int x = ii.intValue(); System.out.println("x:"+x); //方式2 //public static int parseInt(String s) int y = ii.parseInt(s); System.out.println("y:"+y); }
5.進制的轉換:
進制間轉換 | 方法 | 說明 |
---|---|---|
十進制到二進制 | toBinaryString(int i) | 將一個十進制整數轉換成字符串形式的二進制數 |
十進制到八進制 | toOctalString(int i) | 將一個十進制整數轉換成字符串形式的八進制數 |
十進制到十六進制 | toHexString(int i) | 將一個十進制整數轉換成字符串形式的十六進制數 |
十進制到其餘進制 | toString(int i,int radix) | 將一個十進制數轉換字符串形式的radix進制數,radix爲進制值 |
其餘進制到十進制 | int parseInt(String s, int radix) | 將一個radix進制的數轉換爲十進制 |
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,15)); 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,34)); System.out.println(Integer.toString(100,37)); System.out.println(Integer.toString(100,36)); //其餘進制轉換爲十進制 System.out.println(Integer.parseInt("100",10)); System.out.println(Integer.parseInt("100",2)); System.out.println(Integer.parseInt("100",4)); System.out.println(Integer.parseInt("100",16)); System.out.println(Integer.parseInt("100",23)); //System.out.println(Integer.parseInt("123",2));出錯,由於2進制沒有3 }
三.Character類
1.Character類概述:
Character類在對象中包裝了一個char的值,用於對單個字符進行操做。
該類提供了幾種方法來操縱字符,以肯定字符的類別(小寫字母,數字,等等),並將字符從大寫轉換成小寫等。
2.Character類的構造方法:
Character ch1 = new Character('a'); System.out.println("ch1:"+ch1); //ch1:97
注意:char和Character類之間的轉換方法與int和Integer類之間的轉換方法相同
3.Character類的方法:
序號 | 方法 | 說明 |
---|---|---|
1 | isDigit() | 是不是一個數字字符 |
2 | isWhiteSpace() | 是不是一個空格 |
3 | isUpperCase() | 是不是大寫字母 |
4 | isLowerCase() | 是不是小寫字母 |
5 | toUpperCase() | 指定字母的大寫形式 |
6 | toLowerCase() | 指定字母的小寫形式 |
7 | toString() | 返回字符的字符串形式 |
public static void main(String[] args) { //public static boolean isUpperCase(int codePoint)判斷給定的字符是否爲大寫字符 System.out.println(Character.isUpperCase('A')); System.out.println(Character.isUpperCase('a')); System.out.println(Character.isUpperCase('0')); //public static boolean isLowerCase(char ch):判斷給定的字符是不是小寫字符 System.out.println(Character.isUpperCase('A')); System.out.println(Character.isUpperCase('a')); System.out.println(Character.isUpperCase('0')); // public static boolean isDigit(int codePoint):判斷給定的字符是不是數字 System.out.println(Character.isUpperCase('A')); System.out.println(Character.isUpperCase('a')); System.out.println(Character.isUpperCase('0')); //public static char toUpperCase(char ch):把給定的字符轉換爲大寫字符 System.out.println(Character.toUpperCase('a')); //public static char toLowerCase(char ch):把給定的字符轉換爲小寫字符 System.out.println(Character.toLowerCase('A')); }