一.自动装箱与拆箱
public class AutoBoxingUnboxing
{
public static void main(String[] args)
{
//把一个基本类型变量赋给Integer对象
Integer inobj = 5;
//直接把一个boolean类型变量赋给一个Object类型的变量
Object boolobj = true;
//直接把一个Integer对象赋给int类型的变量
int it = inobj;
if(boolobj instanceof Boolean)//boolobj的类型是否是Boolean的父类
{
boolean b = (Boolean)boolobj;//将Boolean强制转换成Object类型
System.out.println(b);//输出true
}
}
}
注意:
自动装箱与自动拆箱必须注意类型匹配,eg:Integer类型只能自动拆成int类型变量。
补充:
①Java具有8种基本数据类型:
(byte,int,short,long,char,float,double,boolean),
不具备“对象”的特性:没有成员变量;方法可被调用。所以提出包装类的概念,使变量可以当成”对象”来使用。
②int–Integer,char–Character,其他的6种所对应的包装类都是讲其首字母大写即可。eg:byte–Byte
二.基本类型变量与字符串之间的转换
1.字符串转换成基本类型:
①利用包装类提供的parseXXX(String s)静态方法。(除了Character之外的所有包装类都提供该方法)
②利用包装类提供的XXX(String s)构造器。
2.基本类型转换成字符串:
①将基本类型变量和”“进行连接运算。
②使用XXX.valueOf(基本类型)的方法
public class Change
{
public static void main(String[] args)
{
String str = "123";
//将一个字符串转化成int类型,其他类型同理(Character包装类不具有Parse方法)
int it1 = Integer.parseInt(str);
System.out.println(it1);
//输出123
int it2 = new Integer(str);
//输出123
int it3 = new Integer("123");
System.out.println(it3);
//输出123
int it4 = Integer.parseInt("123");
System.out.println(it4);
//输出123
/*将基本类型转换成字符串*/
int it5 = 456;
String str1 = String.valueOf(it5);
//输出456
String str2 = String.valueOf(456);
System.out.println(str2);
//输出456
String str3 = String.valueOf(2.345f);
System.out.println(str3);
//输出2.345
String str4 = String.valueOf(3.344);
System.out.println(str4);
//输出3.344
String str5 = String.valueOf(true);
System.out.println(str5);
//输出true
String str6 = false + "";/*其他类型同理*/
System.out.println(str6);
//输出false
}
}
三.包装类比较问题
public class BJ
{
public static void main(String[] args)
{
Integer a = new Integer(6);//直接取出包装类中的数值进行比较
System.out.println("a大于5吗?" + (a>5));
//输出true
Integer b = new Integer(2);
Integer c = new Integer(2);
System.out.println("b与c相等吗?" + (b == c) );
//输出flase
/*两包装类进行比较,必须要两个包装类指向一个对象时
(地址相同),返回true,显然两个对象,地址不同*/
System.out.println("b与c相等吗?" + (b > c) );
//输出flase
System.out.println("b与c相等吗?" + (b < c) );
//输出flase
/*数值的话,直接比较;对于Integer包装类型(其他类型根据其value()类型处理数据),
是根据其intValue()方法(输出整数值 eg:double类型数据丢掉小数点后面的数据)
的返回值(也就是其相应的基本类型),
显然*/
System.out.println("b与c相等吗?" + (b < c) );
//输出flase
System.out.println("b与c相等吗?" + (b.compareTo(c) ));
//输出true
/*1 大于 0 等于 -1 小于*/
System.out.println("两个包装类相等吗?" + (new Integer(2) == new Integer(2)));
//输出false
Integer d = 2;
Integer e = 2;
System.out.println("d与e相等吗?" + (d == e));
//输出true
Integer f = 128;
Integer g = 128;
System.out.println("f与g相等吗?" + (f == g));
//输出false
/*因为系统把-128-127之间的整数自动封箱成Integer*/
}
}
补充:
包装类提供了compare(xxx,xxx)方法,比较两个基本类型值的大小,包括boolean类型(true>false)
System.out.println(Boolean.compare(true,false));
//输出1
System.out.println(Boolean.compare(true,true));
//输出0
System.out.println(Boolean.compare(false,true));
//输出-1
System.out.println(Integer.compare(4,5));
//输出-1