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)
Integer
intObject0
=
new
Integer(10);
// 基础数据类型转换成包装类( int转换成Integer)
Integer
intObject1
=
new
Integer(
"11"
);
// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象
// 包装类转换成基础数据类型(Integer转换成 int)
int
intData0
=
intObject0
.intValue();
System.
out
.println(
"intData0="
+
intData0
);
System.
out
.println(
"intObject0="
+
intObject0
);
System.
out
.println(
"intObject1="
+
intObject1
);
// 基础数据类型转换成包装类(boolean转换成Boolean)
Boolean
booleanObject0
=
new
Boolean(
true
);
Boolean
booleanObject1
=
new
Boolean(
"true"
);
// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象
// 包装类转换成基础数据类型(Boolean转换成boolean)
boolean
booleanData0
=
booleanObject0
.booleanValue();
System.
out
.println(
"booleanObject0="
+
booleanObject0
);
System.
out
.println(
"booleanObject1="
+
booleanObject1
);
System.
out
.println(
"booleanData0="
+
booleanData0
);
// 基础数据类型转换成包装类(char转换成Character)
Character
charObject0
=
new
Character(
'\u0041'
);
// 包装类转换成基础数据类型(Character转换成char)
char
charData0
=
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=A
3、Java自动装箱和拆箱
Java自动装箱和拆箱特性是在Java SE 5才添加的特性.简单的说装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
// 自动装箱(将基础数据类型赋给包装类对象)
Integer
intObject1
= 20;
// 自动装箱等价于编译器进行了下面的操作
Integer
intObject2
= Integer.valueOf(21);
// 自动拆箱(将包装类对象赋给基础类型)
int
intData1
=
new
Integer(20);
// 自动拆箱等价于编译器进行了下面的操作
int
intData2
=
new
Integer(20).intValue();
附:自动装箱和拆箱都是由编译器来完成的。自动装箱相当于编译器调用了static Integer valueOf(int i);自动拆箱相当于编译器调用了 intValue()方法。
附:进行自动装箱和自动拆箱时必须注意类型匹配。
4、包装类可进行基本数据类型和字符串之间的转换
包装类还提供了基本数据类型和字符串之间的转换,除了Character之外的所有包装类都提供了一个static parseXxx(String s)静态方法,用于将一个特定字符串转换成基本数据类型变量。同时String类里也提供了多个重载的valueOf()方法,用于将基本数据类型变量转换成字符串。
附:也就是字符串转基本数据类型用包装类的
static parseXxx(String s),基本数据类型转字符串用String的valueOf()方法。
// 整形和字符串类型互转
int
intData3
= Integer.parseInt (
"30"
);
int
intData4
= Integer.parseInt (
"40"
, 8);
String
intString3
= String.valueOf(30);
// 浮点型和字符串类型互转
float
floatData1
= Float.parseFloat (
"3.14"
);
String
floatString1
= String.valueOf(3.14);
// 布尔型和字符串类型互转
boolean
booleanData1
= Boolean.valueOf (
true
);
String
booleanString1
= String.valueOf(
"true"
);
附:基本数据类型转字符串的另一种简单方法是使用基本数据类型和""进行连接运算即可完成转换。
附:最后附上该部分的程序的源码:
package
javabase;
public
class
WrapperClass {
public
static
void
main(String[]
args
) {
// 基础数据类型转换成包装类( int转换成Integer)
Integer
intObject0
=
new
Integer(10);
// 基础数据类型转换成包装类( int转换成Integer)
Integer
intObject1
=
new
Integer(
"11"
);
// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象
// 包装类转换成基础数据类型(Integer转换成 int)
int
intData0
=
intObject0
.intValue();
System.
out
.println(
"intData0="
+
intData0
);
System.
out
.println(
"intObject0="
+
intObject0
);
System.
out
.println(
"intObject1="
+
intObject1
);
// 基础数据类型转换成包装类(boolean转换成Boolean)
Boolean
booleanObject0
=
new
Boolean(
true
);
Boolean
booleanObject1
=
new
Boolean(
"true"
);
// 除了Character之外,还可以通过传入一个字符串参数来构建包装类对象
// 包装类转换成基础数据类型(Boolean转换成boolean)
boolean
booleanData0
=
booleanObject0
.booleanValue();
System.
out
.println(
"booleanObject0="
+
booleanObject0
);
System.
out
.println(
"booleanObject1="
+
booleanObject1
);
System.
out
.println(
"booleanData0="
+
booleanData0
);
// 基础数据类型转换成包装类(char转换成Character)
Character
charObject0
=
new
Character(
'\u0041'
);
// 包装类转换成基础数据类型(Character转换成char)
char
charData0
=
charObject0
.charValue();
System.
out
.println(
"charObject0="
+
charObject0
);
System.
out
.println(
"charData0="
+
charData0
);
// 自动装箱(将基础数据类型赋给包装类对象)
Integer
intObject2
= 20;
// 自动装箱等价于编译器进行了下面的操作
Integer
intObject3
= Integer.valueOf(21);
// 自动拆箱(将包装类对象赋给基础类型)
int
intData1
=
new
Integer(20);
// 自动拆箱等价于编译器进行了下面的操作
int
intData2
=
new
Integer(20).intValue();
// 字符串转基础数据类型
int
intData3
= Integer.parseInt (
"30"
);
int
intData4
= Integer.parseInt (
"40"
, 8);
// 基础数据类型转字符串
String
intString3
= String.valueOf(30);
// 浮点型和字符串互转
float
floatData1
= Float.parseFloat (
"3.14"
);
String
floatString1
= String.valueOf(3.14);
// 布尔型和字符串互转
boolean
booleanData1
= Boolean.valueOf (
true
);
String
booleanString1
= String.valueOf(
"true"
);
floatString1
.equals(
booleanString1
);
System.
out
.println(
"intData3="
+
intData3
);
System.
out
.println(
"intData4="
+
intData4
);
}
}