Java 基本数据类型-包装类-String的相互转换(总结+代码实现)
案例实现
@Test
public void typeConvertTest() {
/**
* 基本数据类型->包装类
* 1.调用包装类的构造器 (一般来说有两个,Character是只有一个,Float是两个)
* 2.实际上可以直接赋值:自动装箱
*/
int num1 = 10;
Integer num2 = new Integer(num1);
Integer num3 = new Integer("10");
Integer num4 = num1;//自动装箱
/**
* 包装类->基本数据类型
* 1.调用包装类的xxxValue();获取包装类中包含的基本数据类型
* 3.实际上可以直接赋值:自动拆箱
*/
Double num5 = new Double(12.6);
double num6 = num5.doubleValue();
double num7 = num5;//自动拆箱
/**
* 基本数据类型->String类
* 1.用+的链接效果基本数据类型+""
* 2.调用String重载的valueOf()
*/
float f1 = 12.6f;
String str1 = f1 + "";
String str2 = String.valueOf(f1);
/**
* String类->基本数据类型
* 1.调用相应包装类的parseXxx(String)静态方法
* 2.通过包装类的String参数的构造器
*/
String str3 = "123";
int num8 = Integer.parseInt(str3);
int num9 = new Integer(str3);//自动拆箱
/**
* String类->包装类
* 1.调用包装类中String形参的构造器
*/
String str4 = "45678";
Integer num10 = new Integer(str4);
/**
* 包装类->String类
* 1.调用包装类重载过的的toString()方法
*/
Integer num11 = new Integer(123);
String str5 = num11.toString();
类型总结
-
基本数据类型->包装类:调用包装类的构造器
(基本数据类型包装成包装类的过程叫装箱)
Character包装类提供唯一构造器
Float包装类提供三个构造器
其余六种包装类均提供两个构造器,String形参的构造器和包装类对应的基本数据类型形参的构造器。
注意一般来说String形参的构造器要求是传进来的形参必须是包装类对应的基本数据类型的String。比如
Integer i = new Integer("123abc"); //错误要求必须是int对应的String
这里强调Boolean包装类。
Boolean包装类的构造器进行了优化,其String的构造器传进来的String,在不区分大小写的情况下,和String"true"比对,相等就就返回true,其余的都返回false
额外留意:
boolean b;//默认值是false Boolean B;//默认值是null
包装类很多构造器在新版本已弃用,JDK5.0以后允许出现自动装箱和自动拆箱,就不需要调用这些构造函数了。
-
包装类->基本数据类型:调用包装类的xxxValue(),这个过程叫拆箱
Integer in1 = new Integer(12); int i = in1.intValue();
-
基本数据类型->String类型:调用String重载的valueOf()
方法一:
int num1 = 10; String str = num1 + "";//巧妙利用+
方式二:调用String重载的valueOf(xxx xxx)
float f1 = 12.3f; String str2 = String.valueOf(f1); //valueOf(基本数据类型)
-
包装类->String类型:调用String重载的valueOf()
Double d = 19.5; String str2 = String.valueOf(d);//valueOf(Object)
-
String类型->基本数据类型或包装类:调用包装类的方法parseXxx(String s)
string str = "123"; int num1 = (int)str;//错误写法 Integer in1=(Integer)str;//instanceof为真才能转换,首先得有字符类关系才能进行类类型转换
正确写法:
String str = "123"; int num = Inter.parseInt(str);
总结一句,要转成String的就用String重载的valueOf()。String要转成基本数据类型或包装类,就调用包装类的方法parseXxx(String s);
- 自动装箱与自动拆箱
public void method(Object obj){
System.out.println(obj);
}
public void test1(){
int num=10;
method(num);
}
将int类型数据传到Object类型的形参去一般来说是不行,但先版本有了有自动装箱和自动拆箱
-
自动装箱----自动完成基本数据类型包装成包装类
int num = 10; Integer num1 = num;//自动装箱,相当于调用了new Integer(num); int num2 = num1;//自动拆箱相当于调用了num1.intValue();
-
自动拆箱----自动获得包装类对象中包装的基本类型变量