基本類型包裝類概述
将基本資料類型封裝成對象的好處在于可以在對象中定義更多的功能方法操作該資料。
常用的操作是用于基本資料類型和字元串之間的轉換。
基本類型與包裝類的定義如下:
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
public class test {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(60)); //轉化為二進制字元串
System.out.println(Integer.toOctalString(60)); //轉換成八進制字元串
System.out.println(Integer.toHexString(60)); //轉換成十六進制字元串
}
}
輸出:
111100
74
3c
integer類
Integer類概述
Integer類在對象中包裝了一個基本類型int值,該類提供了多種方法,能在int類型和String類型之間互相轉換,還提供了處理int類型時非常有用的其他一些常量和方法。
Integer類的構造方法
public Integer(int value)
public Integer(String s)
可以使用構造方法建立對象:
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
Integer i1=new Integer(100);
System.out.println(i1);
Integer i2=new Integer("100");
System.out.println(i2);
Integer i3=new Integer("abc"); // java.lang.NumberFormatException異常
因為abc不是數字字元串,是以轉換會報錯
System.out.println(i3);
}
輸出:
2147483647
-2147483648
100
100
Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.(Unknown Source)
at com.heima.collection.test.main(test.java:18)
String和int類型的互相轉換
1.int類型轉換為String類型
和“”進行拼接
public static String valueOf(int i)
int--Integer--String(Integer類的toString()方法)
public static String toString(int i) (Integer類的靜态方法)
2.String類型轉換為int類型
String--Integer--int
public static int parseInt(String s)
public class test {
public static void main(String[] args) {
//int--String
int i=200;
String s1=i+"";
String s2=String.valueOf(i);
Integer i2=new Integer(i);
String s3=i2.toString();
String s4=Integer.toString(i);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
//String--int
String s="200";
Integer i3=new Integer(s);
int i4=i3.intValue();
int i5=Integer.parseInt(s);
System.out.println(i4);
System.out.println(i5);
}
}
輸出:
200
200
200
200
200
200
parseXxx()方法
基本資料類型包裝類有八種,其中除了char的包裝類Character中沒有parseXxx()方法外,其它七種都有parseXxx()方法,可以将這七種的字元串表現形式轉換成基本資料類型。
char的包裝類Character中沒有parseXxx()方法,字元串到字元的轉換通過toCharArray()就可以将字元串轉換為字元數組。
public class test {
public static void main(String[] args) {
String s="true";
boolean b=Boolean.parseBoolean(s);
System.out.println(b);
char[] c=s.toCharArray();
for(int i=0;i
System.out.println(c[i]);
}
}
輸出:
true
t
r
u
e
JDK5的新特性
自動裝箱:把基本類型轉換為包裝類類型
自動拆箱:把包裝類類型轉換為基本類型
public class test {
public static void main(String[] args) {
int x=100;
Integer i1=new Integer(x); //将基本資料類型包裝成對象,裝箱
int y=i1.intValue(); //将對象轉換為基本資料類型,拆箱
System.out.println(y);
Integer i2=100; //自動裝箱,把基本資料類型轉換成對象
int z =i2+200; //自動拆箱,把對象轉換成基本資料類型
System.out.println(z);
//Integer i3=null;
//int a=i3+100; //底層i3調用intValue()方法,但是i3是null,null調用方法就會出現空指針異常java.lang.NullPointerException
//System.out.println(a);
}
}
輸出:
100
300
面試題
public class test {
public static void main(String[] args) {
Integer i1=new Integer(97);
Integer i2=new Integer(97);
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
System.out.println("------------");
Integer i3=new Integer(197);
Integer i4=new Integer(197);
System.out.println(i3==i4);
System.out.println(i3.equals(i4));
System.out.println("------------");
Integer i5=97;
Integer i6=97;
System.out.println(i5==i6);
System.out.println(i5.equals(i6));
System.out.println("------------");
Integer i7=197;
Integer i8=197;
System.out.println(i7==i8); //原因在于-128到127是byte的取值範圍,如果在這個範圍内,自動裝箱就不會新建立對象,而是從常量池中擷取,如果超過了byte取值範圍就會再重新建立對象
System.out.println(i7.equals(i8));
}
}
輸出:
false
true
------------
false
true
------------
true
true
------------
false
true