1、Java基础数据类型及其包装类的对应关系
Java基础数据类型都有其对应的包装类,除了int和char的包装类写法特殊外,其他数据类型的包装类均是将其对应的基础数据类型的首字母大写即可。
基本类型 |
大小 |
数值范围 |
默认值 |
包装类性 |
byte |
8bit |
-2^7 to 2^7-1 |
0 |
Byte |
short |
16bit |
-2^15 to 2^15-1 |
0 |
Short |
int |
32bit |
-2^31 to 2^31-1 |
0 |
Integer |
long |
64bit |
-2^63 to 2^63-1 |
0 |
Long |
char |
16bit |
'\u000' to '\uFFFF' |
'\u0000' |
Character |
float |
32bit |
|
0.0F或0.0f |
Float |
double |
64bit |
|
0.0 |
Double |
boolean |
1bit |
true or false |
false |
Boolean |
2、Java基础数据类型及其包装类的显式转换
基础数据类型转成相应的包装类使用new关键字,调用了对应包装类的构造器来实现的,传入的构造器参数是响应的基础数据类型,(除了Character之外,还可以通过传入一个字符串参数来构建包装类对象)。包装类型转成基础数据类型则使用包装类对象的XXXValue()方法,其中XXX是该包装类型对应的基础数据类型。
// 基础数据类型转换成包装类(int转换成Integer) IntegerintObject0=newInteger(10); // 基础数据类型转换成包装类(int转换成Integer) IntegerintObject1=newInteger("11");// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象 // 包装类转换成基础数据类型(Integer转换成int) intintData0=intObject0.intValue(); System.out.println("intData0="+intData0); System.out.println("intObject0="+intObject0); System.out.println("intObject1="+intObject1); // 基础数据类型转换成包装类(boolean转换成Boolean) BooleanbooleanObject0=newBoolean(true); BooleanbooleanObject1=newBoolean("true");// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象 // 包装类转换成基础数据类型(Boolean转换成boolean) booleanbooleanData0=booleanObject0.booleanValue(); System.out.println("booleanObject0="+booleanObject0); System.out.println("booleanObject1="+booleanObject1); System.out.println("booleanData0="+booleanData0); // 基础数据类型转换成包装类(char转换成Character) CharactercharObject0=newCharacter('\u0041'); // 包装类转换成基础数据类型(Character转换成char) charcharData0=charObject0.charValue(); System.out.println("charObject0="+charObject0); System.out.println("charData0="+charData0); 输出: intData0=10 intObject0=10 intObject1=11 booleanObject0=true booleanObject1=true booleanData0=true charObject0=A charData0=A3、Java自动装箱和拆箱 Java自动装箱和拆箱特性是在Java SE 5才添加的特性.简单的说装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。 // 自动装箱(将基础数据类型赋给包装类对象) IntegerintObject1= 20; // 自动装箱等价于编译器进行了下面的操作 IntegerintObject2= Integer.valueOf(21); // 自动拆箱(将包装类对象赋给基础类型) intintData1=newInteger(20); // 自动拆箱等价于编译器进行了下面的操作 intintData2=newInteger(20).intValue();附:自动装箱和拆箱都是由编译器来完成的。自动装箱相当于编译器调用了static Integer valueOf(int i);自动拆箱相当于编译器调用了 intValue()方法。附:进行自动装箱和自动拆箱时必须注意类型匹配。4、包装类可进行基本数据类型和字符串之间的转换 包装类还提供了基本数据类型和字符串之间的转换,除了Character之外的所有包装类都提供了一个static parseXxx(String s)静态方法,用于将一个特定字符串转换成基本数据类型变量。同时String类里也提供了多个重载的valueOf()方法,用于将基本数据类型变量转换成字符串。 附:也就是字符串转基本数据类型用包装类的static parseXxx(String s),基本数据类型转字符串用String的valueOf()方法。 // 整形和字符串类型互转 intintData3= Integer.parseInt("30"); intintData4= Integer.parseInt("40", 8); StringintString3= String.valueOf(30); // 浮点型和字符串类型互转 floatfloatData1= Float.parseFloat("3.14"); StringfloatString1= String.valueOf(3.14); // 布尔型和字符串类型互转 booleanbooleanData1= Boolean.valueOf(true); StringbooleanString1= String.valueOf("true");附:基本数据类型转字符串的另一种简单方法是使用基本数据类型和""进行连接运算即可完成转换。
附:最后附上该部分的程序的源码:packagejavabase;
publicclassWrapperClass { publicstaticvoidmain(String[]args) { // 基础数据类型转换成包装类(int转换成Integer) IntegerintObject0=newInteger(10); // 基础数据类型转换成包装类(int转换成Integer) IntegerintObject1=newInteger("11");// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象 // 包装类转换成基础数据类型(Integer转换成int) intintData0=intObject0.intValue(); System.out.println("intData0="+intData0); System.out.println("intObject0="+intObject0); System.out.println("intObject1="+intObject1); // 基础数据类型转换成包装类(boolean转换成Boolean) BooleanbooleanObject0=newBoolean(true); BooleanbooleanObject1=newBoolean("true");// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象 // 包装类转换成基础数据类型(Boolean转换成boolean) booleanbooleanData0=booleanObject0.booleanValue(); System.out.println("booleanObject0="+booleanObject0); System.out.println("booleanObject1="+booleanObject1); System.out.println("booleanData0="+booleanData0); // 基础数据类型转换成包装类(char转换成Character) CharactercharObject0=newCharacter('\u0041'); // 包装类转换成基础数据类型(Character转换成char) charcharData0=charObject0.charValue(); System.out.println("charObject0="+charObject0); System.out.println("charData0="+charData0); // 自动装箱(将基础数据类型赋给包装类对象) IntegerintObject2= 20; // 自动装箱等价于编译器进行了下面的操作 IntegerintObject3= Integer.valueOf(21); // 自动拆箱(将包装类对象赋给基础类型) intintData1=newInteger(20); // 自动拆箱等价于编译器进行了下面的操作 intintData2=newInteger(20).intValue(); // 字符串转基础数据类型 intintData3= Integer.parseInt("30"); intintData4= Integer.parseInt("40", 8); // 基础数据类型转字符串 StringintString3= String.valueOf(30); // 浮点型和字符串互转 floatfloatData1= Float.parseFloat("3.14"); StringfloatString1= String.valueOf(3.14); // 布尔型和字符串互转 booleanbooleanData1= Boolean.valueOf(true); StringbooleanString1= String.valueOf("true"); floatString1.equals(booleanString1); System.out.println("intData3="+intData3); System.out.println("intData4="+intData4); }}