基本数据类型、包装类、String三者之间的转换
学习包装类,图片及代码来自尚硅谷教育,侵删
包装类是什么?为什么要用包装类?
java提供了8中基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征。
基本数据类型-->包装类
调用构造器
//基本数据类型 ---> 包装类
//具体方法: 调用包装类的构造器,可以是数值,可以是字符串
@Test
public void test1() {
int num1 = 10;
//不能这么写,因为基本数据类型不是Object的子类
// System.out.println(num1.toString());
Integer integer = new Integer(num1);
System.out.println(integer.toString());//包装类可以调用toString方法
System.out.println(integer.doubleValue() );//可以输出为其他格式
//构造器参数可以是字符串
Integer integer1 = new Integer("123");
System.out.println(integer1);
//报异常
// Integer integer2 = new Integer("123abc");
Float float1 = new Float(12.3f);
Float float2 = new Float("12.3f");
System.out.println(float1);
System.out.println(float2);
Float float3 = new Float(12.3);
System.out.println("参数不带f时"+float3);
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean("true");
Boolean b3 = new Boolean("true123");//不会抛异常(注意和上面的区别)
System.out.println("输出是 " + b3);
//Boolean 只要不是 true(不管大小写) 都会是false,包括空值
}
运行结果
包装类-->基本数据类型
调用包装类的xxxValue()
//包装类 ---> 基本数据类型
//方法: 调用包装类的xxxValue()
@Test
public void test2() {
Integer in1 = new Integer(12);
int i1 = in1.intValue();
System.out.println(i1 + 1);
Float f1 = new Float("3.14f");
float fl1 = f1.floatValue();
System.out.println(fl1 + 1.0);
}
自动装箱与自动拆箱
和之前代码相比的优势:
/**
* JDK 5.0新特性:自动装箱与自动拆箱
*/
@Test
public void test3() {
int num1 = 10;
//基本数据类型-->包装类
method(num1);
//自动装箱:
int num2 = 10;
Integer in1 = num2;//自动装箱
boolean b1 = true;
Boolean b2 = b1;//自动装箱
//自动拆箱: 包装类-->基本数据类型
System.out.println(in1.toString());
int num3 = in1;//自动拆箱
}
public void method(Object obj) {
System.out.println(obj);
}
基本数据类型和包装类 与 String间转换
基本数据类型和包装类-->String类型
方法一:连接一个 “”
方法二:调用String类的valueOf()
@Test
public void test4() {
int num1 = 10;
//方式一:连接运算
String str1 = num1 + "";
System.out.println(str1);
boolean b1 = true;
String str2 = b1 + "";
System.out.println(str2);
//方式二 重写的valueOf
float f1 = 12.3f;
String str3 = String.valueOf(f1);
}
String类型 --> 基本数据类型、包装类
调用包装类的parseXXX()方法
可能会报异常 NumberFormatException,需要注意
@Test
public void test5() {
String str1 = "123";
int in1 = Integer.parseInt(str1);
System.out.println( in1 + 2); //125
boolean b1 = Boolean.parseBoolean("true");
System.out.println(b1);//true
}