1 基本數據類型對象包裝類
八大基本數據類型有:byte、int、short、long、float、double、char、boolean。
基本數據類型對象包裝類,就是按照面向對象的方法,講基本數據類型包裝成對象。
這樣,就可以通過調用對象的方法,來對基本數據類型進行操作,
還可以實現基本數據類型和字符串之間的轉換,以及不同進制間的轉換。
基本數據類型 引用數據類型(對象包裝類)
byte Byte
short Short
int Integer **
long Long
boolean Boolean
float Float
double Double
char Character **
基本數據類型對象包裝類的最常見作用:
就是用於基本數據類型和字符串類型之間做轉換。
1,基本數據類型轉成字符串。
基本數據類型+""
基本數據類型.toString(基本數據類型值);
如:Integer.toString(34); //將整數34變成字符串"34"
2,字符串轉成基本數據類型。
static int parseInt(String str):將字符串參數作爲有符號的十進制整數進行解析。
xxx a = Xxx.parseXxx(String);
例:
int num = Integer.parseInt("123");
double num = Double.parseDouble("12.34");
boolean b = Boolean.parseBoolean("true");
方法二(非靜態):
Integer的非靜態方法intValue(),使用前要創建Integer對象。
例: Integer i = new Integer("123");
int num = i.intValue();
3,十進制轉成其他進制。
toBinaryString(); 轉成二進制
toHexString(); 轉成十六進制
toOctalString(); 轉成八進制
4,其他進制轉成十進制。
static int parseInt(String str, int radix);
將字符串參數str解析爲以radix爲基數的有符號整數的十進制形式。
即把str看作radix進制的數,再轉成十進制。
parseInt("110",10); //把字符串"110"轉成十進制數。
parseInt("110",2); //把字符串"110"看成二進制數,再轉成十進制值爲6,結果爲6。
代碼示例:
class IntegerDemo{
public static void main(String[] args){
method_parseInt();
method_to();
method_2();
}
public static void sop(Object obj){
System.out.println(obj);
}
public static void method_parseInt(){
int num = Integer.parseInt("123"); //字符串類型轉換成基本數據類型
sop("num="+(num+4));
}
public static void method_to(){
sop(Integer.toBinaryString(6)); //十進制轉成二進制。
sop(Integer.toBinaryString(-6)); //十進制轉成二進制。
}
public static void method_2(){
int x = Integer.parseInt("110",10); //把十進制的110轉成十進制
sop("x="+x);
int y = Integer.parseInt("110",2); //把二進制的110轉成十進制
sop("y="+y);
int z = Integer.parseInt("3c",16); //把十六進制的3c轉成十進制
sop("z="+z);
}
}
2. 基本數據類型對象包裝類 JDK1.5新特性
JDK1.5 之後出現的新特性
自動裝箱,自動拆箱。
Integer num = 12; //進行了自動裝箱,將基本數據類型int類型的12,包裝成Integer對象。
int count = num+1; //進行了自動拆箱,將Integer對象num拆箱爲int類型,再與int類型的1相加,結果爲int類型。
byte範圍內的(-128~127),如果該數值的對象已經存在,則不會再開闢新的空間.
詳見代碼:
class IntegerDemo2{
public static void main(String[] args){
//Integer x = new Integer(4);
Integer x = 4; //自動裝箱,4是一個對象,相當於 new Integer(4)
x = x + 2; //x+2: x進行了自動拆箱,變成了int類型,和2進行加法運算,再將和進行裝箱賦給x。
//自動拆箱原理:x.intValue();
Integer m = 128;
Integer n = 128;
sop("m==n:"+(m==n)); //結果爲false,因爲是兩個對象,內存地址值不同
Integer a = 127;
Integer b = 127;
sop("a==b:"+(a==b)); //結果爲true,因爲a和b指向了同一個Integer對象,
//因爲當數值在byte範圍內時,對於新特性,如果該數值的對象已經存在,則不會再開闢新的空間。
//byte的範圍:-128~127
}
public static void sop(Object obj){
System.out.println(obj);
}
public static void method(){
Integer x = new Integer("123"); //此對象表示字符串參數所指示的int值
Integer y = new Integer(123); //此對象表示指定的int值
sop("x==y:"+(x==y)); //兩個對象,內存地址不同,false
sop("x.equals(y):"+x.equals(y)); //兩個對象內容相同,即int值相同,true
}
}