Java-包装类(JavaPackagingClass)


//手机 请 上下左右 滑动屏幕 观看更全 !

//package Main;


      /**
       * @Overview(概述):
       *      -包装类的主要功能是针对于基本数据类型的对象之间的转换而实现的,
       *        并且会随着JDK版本的更新包装类的功能也发生改变和更多的支持。
       *      -包装类都有一个抽象的父类(Number)其有八个子类分别为:
       *        Boolean(布尔型)、Character(字符型)
       *        以及数值类型(Integer/Byte、Long、Float、Double) 。
       *      -Number类中自带有各种获取类中值的抽象方法 一般形式:
       *        (public abstract 对应的返回值数据类型 对应的数据类型Value(),
       *        例如:public abstract int intValue() ) 。
       *      -装箱:将基本类型保存在基本类型中一般可以用构造方法来完成(例如:
       *        Integer类:Integer(intValue); ) 。
       *      -拆箱:从包装类中获取基本数据类型例如:假如有包装类 Int,int data=Int.intValue() ;
       *      -包装类对象数据类型的转换:
       *       使用包装类有一个最大的特点就是可以实现字符串与基本数据类型之间的转换,可是实际上用户可以
       *       输入的数据类型只有一种,即字符串(String),那么对于程序的需求较多就需要根据接收的
       *       字符串将其转变为基本数据类型,这就要通过转换来完成,还好各个包装类都提供有对应的转换功能。
       *       一般格式为;public static 数据类型 parse对应数据类型的包装类型修饰符(String s) 例如:
       *       Boolean类如果需要转换那么调用方法为;pulic static boolean parseBoolean(String s) .
       *       如果是Integer类则 : public static int parseInteger(String s)
       *       调用案例1:boolean b = Boolean.parseBoolean(String s) ;
       *       调用案例2:int i = Integer.parseInteger(String s) ;
       *       其中Boolean比较特殊如果内容不为true字符串(不区分大小写)(当传入true和false时可不加双引号 " ")
       *       否则皆为false 。
       * @Attention:
       *      1、Boolean除了true(不区分大小写(true和false可不加双引号 " "))其他都为false但是其他都得加 " "  .
       *      2、为了能更好的推行使用自动装拆箱JDK1.9之后包装类均被进行过期处理
       *      (可用@SuppressWarnings({"压制内容"})进行注解处理对其进行提示压制详情观(package Main->
       *       Annotation.java)且在今后的开发中尽量多使用自动装拆箱。
       *      3、自动装拆箱:
       *       -自动装拆箱即可以直接将基本类型赋值给对应的包装类对象,也可直接将包装类对象赋值给对应的
       *       普通变量,且可包装类对象还可直接参与数学运算与引用传参,还可把基本数据类型赋值给
       *       Object类型(向上转型+自动装箱(因为Object是所有类的父类))然后通过向下转型为对应的
       *       包装类再直接赋值给对应类型的变量等操作,
       *      4、包装类对象与对象之间做相等判断操作时在值大于byte的取值范围时,必须使用equals() 。
       *      5、
       * @time(时间):-2019/04/24
       * @role(谁):-杨木发
       *
       * @modify(修改)-:
       * -@time:
       * -@role:
      */

public class PackagingClass {
    public static void main(String[] args) {
        System.out.println("自定义拆装箱工具类:") ;
        Object obj = new Int(100) ; //装箱:讲基本类型保存在包装类中。
        int number = ((Int)obj).intValue() ; //拆箱:从包装类中转换获取到基本类型数据。
        System.out.println(number);
        Int integer = new Int(20) ; //装箱
        int number1 = integer.intValue() ; //拆箱
        System.out.println("系统提供类装拆箱类:\n"+"Integer<->\nint "+number1);

        Double boub = new Double(10.1) ;
        System.out.println("Double<->double \n"+boub.doubleValue()/3.3);

        Object boo = new Boolean("TrUe") ;
        boolean boo1 = ((Boolean)boo).booleanValue() ;
        System.out.println("Boolean<->boolean: \n"+boo1);
        Boolean boo2 =new Boolean(false) ;
        System.out.println(boo2) ;
        Boolean boo3 = new Boolean("yangmufahaoshuai") ;
        System.out.println(boo3);

        System.out.println("自动装拆箱:");
        Float fo = 31.1f ; //自动装箱(此时fo为一个点对象),且此时是直接赋值给对象而不再关心构造方法了 。
        Object OF = 66.6f ;  //自动装箱为Double并再向上转型,此时不在需要关心构造 。
        float fo1 = (Float)OF ; //向下转型为Float再自动拆箱为float 。
        System.out.println("Float<->float: \n"+fo);
        System.out.println(OF) ;
        //此时打印的为Object对象OF输出的依然为当初给定的数值说明已自动拆箱或toString已被Number类覆写 。
        System.out.println(fo1) ;

        System.out.println("包装类之间的相等判断:");
        Float fo2 = 66.6f ;
        Float fo3 = 199.3f ;
        Float fo4 = 128.0f ;
        Float fo5 = -128.0f ;
        System.out.println(fo2==fo1) ;//true其值都低于128
        System.out.println(fo3==fo2) ;//false
        System.out.println(199.3f==fo2) ;//false其值都高于128
        System.out.println(-128.0==fo5) ;//true
        System.out.println(fo3.equals(fo4)) ;//true
        //通过比较得知在包装类对象与对象之间进行相等判断是,其值高于128(byte取值范围)的
        //包装对象之间用==作判断时即使真的相等得到的结果也皆为false,而包装类与基本类型常量作比较时却能得到正常结果。
        //而超没有过byte取值范围的皆能够得到正常判断结果,所以尽量使用equals() 。

        System.out.println("包装类数据类型的转换:");
        String str = "True" ;
        String b1 = "33.33" ;//自动装箱
        Boolean b = Boolean.parseBoolean("true") ;//手动装箱
        System.out.println(b.booleanValue()) ;
        boolean b2 = Boolean.parseBoolean(str) ;
        //接收与包装类型(Doolean)对应的字符串("True")并转化成包装类型拆箱后的对应数据类型(Boolean)
        double b3 = Double.parseDouble(b1) ;
        //接收与包装类型(Double)对应的字符串("33.33")并转化成包装类型拆箱后的对应数据类型(double)
        System.out.println(b2) ;
        System.out.println(b3) ;
    }
}

//1、自定义手动装箱以工具类,int<->Integer为例-
class Int {
   private int data ;
    public Int(int Int){
        this.data=Int ;
    }
    public int intValue(){
        return this.data ;
    }
}

/*-------------------反爬声明o()咻咻咻--------------------
 

作者:**杨木发** 版权声明: 本文为博主倾情原创文章,整篇转载请附上源文链接!

如果觉得本文对你有所收获,你的请评论点赞 与

合理优质的转发也将是鼓励支持我继续创作的动力,

更多精彩可百度搜索 杨木发 或:

个人网站:杨木发的自留地 - 此地无银三百两

GitHub:https://github.com/yangmufa

坚持创作 善于总结 开源共享 高质进步。

-------------------反爬声明o()咻咻咻--------------------*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小马达

你的鼓励将是我创作的最大动力o

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值