前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java-包装器类

Java-包装器类

作者头像
用户7886150
修改2021-02-02 11:41:23
5800
修改2021-02-02 11:41:23
举报
文章被收录于专栏:bit哲学院

参考链接: Java包装器

所有的基本类型都有一个与之对应的类,这些类称为包装器类。对象包装器类是不可改变的,即一旦构造类包装器类,就不允许更改包装在其中的值。同时,对象包装器类还是final,因此不能定义它们的子类。 

基本类型包装器类intIntegerbooleanBooleanlongLongfloatFloatshortShortdoubleDoublebyteBytecharCharacter 

自动拆箱/装箱 

自动装箱:可以直接将基本类型数据赋值给其对应的包装器类型。自动装箱一定要类型严格匹配,包装器类型没有基本类型从小到大的转换。在赋值的地方,都可以发生自动拆箱与装箱。 

public class Outer {

    public static void main(String[] args) {

        //Double d=5; //不通过,类型不匹配。5是int

        //Double b;

        //b=10;//不通过

        Double a=new Double(5); //通过,这样就不是自动装箱了

        System.out.println(a);

        int a1=9;

        System.out.println(a1);

        Outer outer=new Outer();

        System.out.println(outer.display(a1));//参数传递的过程中也存在自动装箱/拆箱

    }

    public int display(Integer a){

        System.out.println("a="+a);

        return a+1;

    }

自动拆箱:和自动装箱的过程相反,可以将包装器类对象赋值给一个基本类型。在自动拆箱的过程中,赋值号左边是基本类型,因此自动拆箱可以类型不严格匹配。 

public class Outer {

    public static void main(String[] args) {

        Integer a=5;

        double d=a;

        System.out.println(d+"   "+a);

    }

输出结果: 

5.0   5 

包装器类型基本方法 

下面以java.lang.Integer为例进行说明, 

方法功能int intValue()返回Integer对象的值static String toString(int i)以一个新String对象的形式返回给定数值的十进制表示static String toString(int i,int radix)返回给定数值i的基于radix参数进制表示static int parseInt(string s)返回字符串s表示的整数数值(默认为10进制)static int parseInt(string s,int radix)返回radix进制的字符串s表示的整数static Integer valueOf(string s)返回用s表示的整数数值进行初始化后的新Integer对象(s的表示进制为10进制)static Integer valueOf(string s,int radix)用radix进制的字符串s表示的整数数值进行初始化后的新Integer对象Integer(int value)Integer类的构造函数Integer(String s)Integer类的构造函数,将字符串s表示的整数数值赋值给value(默认为10进制) 

包装器类 

每个包装器类都有两个构造函数: 

Type(type value);//以基本类型为参数来构造包转器类

Type(String value);//将字符串转换为相应的包装器类型 

其中Type为相应的包装器类,type为其基本类型。 

数值和字符串相互转换 

每个包转器类有静态的parseType(String value) 将字符串转换为基本类型。  比如Integer 类的方法为public static int parseInt(String s) ;数值向字符串的转换  

  基本类型->字符串。String.valueOf() 方法包转器类->字符串。String.valueOf() 方法,自动拆箱的原因。""+基本类型(包转器类型)字符串向数值类型转换  

  通过包转器类的构造函数通过包装器类的valueOf(String s) 返回一个包装器类通过包转器类的静态方法 parseType()(Type为相应的基本类型)返回一个基本类型数值。 

数值型比较大小 

1、 用>,<,<=,>=比较基本类型或包装器类型  - 比较运算符两边可以是任意数值类型的基本类型或包装器类型,两种类型可以混用。  - 如果两边有包装器类型,则先自动拆箱成基本类型,然后再进行比较。  - 每个包装器类都提供了一个静态compare方法,例如Integer 包装器类的compare方法为public static int compare(int x, int y) 。由于自动装箱的存在,因此也可以传递包装器类对象。 

public class Outer {

    public static void main(String[] args) {

        System.out.println(5 >= new Double(5.0));//true

        System.out.println(new Integer(5) >= new Double(5.0));//true;包装器类混合比较

        System.out.println(5 > new Double(5.0));//false

        System.out.println(Integer.compare(5,6));//-1

        System.out.println(Integer.compare(new Integer(5),new Integer(6))); //-1,传递包装器类

        System.out.println(new Integer(5).compareTo(new Integer(6))); //-1

    }

2、相等性比较  - 每个包转器类有equals方法,调用该方法进行相同类对象之间的比较。  - 当使用== 进行比较的时候,如果== 两边都是包装器类型,那么比较将是引用地址是否相同;如果其中一边为包装器类型,另一边是基本类型,那么包装器类型先自动拆箱为基本类型,那么将是两个基本类型之间的比较。  - 当Integer中存储的数位于-128到127之间的short和int被包装到固定的对象中。如果通过自动装箱并且是范围在-128到127之间得到的Integer对象指向该固定的对象。通过 new 运算符一定是新建立的对象。 

public class Outer {

    public static void main(String[] args) {

        System.out.println(new Integer(5)==new Integer(5));//false,两个包装器类对象进行比较

        System.out.println(5==new Integer(5));//true,基本类型和包装器类型进行比较

        Integer a=10;

        Integer b=10;

        System.out.println(a==b); //true,通过自动装箱并且在-128到127之间

        Integer x=200;

        Integer y=200;

        System.out.println(x==y); //false,超出范围

    }

}

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档