菜鸟学Java--包装类及其用法

一.自动装箱与拆箱

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

你可能感兴趣的:(Java)