包装类
基本数据类型都有其对应的引用数据类型,而这些引用数据类型被称为包装类(Wrapper Class)。
-
对应的包装类如下:
byte–>Byte
short–>Short
int–.Integer
long–>Long
float–>Float
double–>Double
char–>Character
boolean–>Boolean -
自动装箱与拆箱
自动装箱 : 基本数据类型可以自动封装成对应的引用数据类型 , 没有自动装箱的时候,需要通过 valueOf 方法进行包装。但是 本质还是通过 valueOf 来进行包装的(JVM来完成的)
自动拆箱 : 基本数据类型的引用类型可以自动变成其对应的基本数据类型
示例
public class AutomaticAndStripping {
public static void main(String[] args) {
//以int 和 Integer为例
int i = 100 ;
// 自动装箱 : 基本数据类型 可以自动变成 引用数据类型
Integer i2 = i ;
//手动装箱
Integer i2 = new Integer(i);
// 自动拆箱 : 引用数据类型 可以自动变成 基本数据类型
i = i2 ;
//自动拆箱
i = i2.intValue();
//其他类型同理...
}
}
- 基本数据类型和引用数据类型的转换
valueOf : 该方法是 一个 static 修饰的方法 , 该方法可以将 对应的基本数据类型 和 字符串 包装成对应的 引用数据类型
toString : 将一个 引用数据类型转成一个 字符串
parseXXXX : 除了Character 都存在该方法, 该方法可以将 字符串转换成 对应的基本数据类型
示例
//ValueOf(String s)
//将一个字符串转成对应的类型(Byte、Short、Integer、Long、Double、Float 、Boolean ) , 如果转换不了,则抛出异常
public class ValueOfUse {
public static void main(String[] args) {
String s = "我是一个字符串" ;
s = "123" ;
// 将 s 包装成 一个 Integer 类型的数据
// 如果转换不了 , 则出现 运行时异常 : java.lang.NumberFormatException
Integer integer = Integer.valueOf(s) ;
System.out.println( integer );
//Character 中的valueOf 方法只能接受 char 类型的数据
//Character.valueOf( );
//ValueOf(String s,int radix)使用 radix是进制数
//将一个字符串转成对应的类型(Byte、Short、Integer、Long、Double、Float ) , radix 是进制
// 查看最小的 radix
System.out.println( Character.MIN_RADIX );
// 查看最大的 radix
System.out.println( Character.MAX_RADIX );
// radix 的范围是 2 - 36
//将字符串21转换为Integer引用类型,并以12进制返回
Integer integer = Integer.valueOf(s , 12 ) ;
System.out.println( integer );
//toString()方法使用 将一个引用数据类型转换成一个字符串
格式1:String toString()
格式2:static String toString(int i)
Integer x=5;
System.out.println(x.toString());
System.out.println(Integer.toString(10));
//也可以通过+号来达到转换成字符串的目的
String s=x+"";
System.out.println(s);
//parsexxx的使用 xxx表示数据类型
//有两个参数,String s,int radix 分别表示字符串和进制数
System.out.println(Integer.parseInt(s));
System.out.println(Integer.parseInt(s,16));
System.out.println(Float.parseFloat(s));
System.out.println(Double.parseDouble(s));
System.out.println(Boolean.parseBoolean(s));
}
}