各数据类型对应的包装类
这里除了int (包装类为Integer)和char(包装类为Character)外,其他数据类型的包装类型都是自己的首字母大写,所有记忆起来会比较容易。
int 和 Integer的转换(这里我们介绍一种包装类,其他的用法一样 )
public class Test2 {
public static void main(String[] args) {
int score=666;
Integer score1 = new Integer(score);
System.out.println("score对应的Integer类型结果为:" + score1);
Integer a=new Integer(1230);
int i=a.intValue();
System.out.println("由Integer类型转换为int类型的结果为:" + i);
}
}
注意: DK自从1.5版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行
例如:
public class Test2 {
public static void main(String[] args) {
Integer score1 = 666;//自动装箱
System.out.println("score对应的Integer类型结果为:" + score1);
int i=score1;//自动拆箱
System.out.println("由Integer类型转换为int类型的结果为:" + i);
}
}
1.基本类型直接与""相连接即可实现转换,如:66+"";
double a=12.5;
System.out.println(a+"");//12.5
System.out.println(a+""+10);//12.510
2.先转换为包装类型,然后调用toString方法
double a=12.5;
String a1=Double.toString(a);//这里先转换为Double类型,然后调用toString方法
System.out.println(a1);//12.5
System.out.println(a1+66);//12.566
3. 使用String的静态方法valueof转换
double a=12.5;
String a1=String.valueOf(a);//使用String的valuOf方法
System.out.println(a1+88);//12.588
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:
String str="2.8";
Double str1=Double.parseDouble(str);
System.out.println("str 转换为double型后+10的结果为:"+(str1+10));//12.8
其他基本类型的包装类都类似以上用法
验证如下:
String str="2.8";
Double str1=Double.parseDouble(str);
System.out.println("str 转换为double型后+10的结果为:"+str1+10);
System.out.println("str 转换为double型后+10的结果为:"+(str1+10));
包装类的缓存范围
boolean:true和false
byte:-128~127
char:0~127
short:-128~127
int:-128~127
long:-128~127
特别注意:对于float和double没有缓存。
大家来看一个例子:
Integer num1 = 200;
Integer num2 = 200;
System.out.println("num1==num2: "+(num1==num2));
Integer num3 = 100;
Integer num4 = 100;
System.out.println("num3==num4: "+(num3==num4));
这段代码看一下输出结果是多少?一般人会认为都是true
结果为
这是为什么呢?
因为在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象,而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都重建一个 Integer对象,所有会返回false。
拿Int 和Integer来说
一、int 是基本类型,直接存数值;而integer引用数据类型。
二、Int的声明不需要实例化,且变量声明后的初始值为0;Integer的是一个类,初始值为null,需要进行实例化,才能对变量数据进行处理。
三、Integer类是int的包装类,实际开发中Integer被看成一个对象,可以进行数据转换等操作。