zoukankan      html  css  js  c++  java
  • 包装类

    概述


    java是面向对象的语言,但是java中支持的8个基本类型不是面向对象的。他们是以值的形式存在的,而不是对象的形式。在面向对象开发过程中及其不方便。为了将基本类型变成以对象形式存在,java对8个基本类型提供了引用类型。

    这8个引用类型称为基本类型的“包装类”

    基本类型                包装类

    int                    java.lang.Integer

    char                 java.lang.Character

    byte                    Byte

    shor                    Short

    long                    Long

    float                    Float

    double                 Double

    boolean               Boolean

    包装类带来的好处,除了可以以对象的形式存在参与面向对象开发外,因为对象还可以含有方法,所以包装类提供了一些对基本类型数据操作的方法。最常用的就是将字符串转换为基本类型数据。

    注意:包装类对字面量的优化(127内,1个字节),使用常量池的方式缓存字面量,这样在出现重复字面量时,不创建新的对象。

    Integer a = Integer.valueOf(1);
    Integer b = Integer.valueOf(1);
    System.out.println(a == b); //true
    Integer a = Integer.valueOf(128);
    Integer b = Integer.valueOf(128);
    System.out.println(a == b); //false
    //Float和Double没有进行优化
    Double d1=Double.valueOf(1.1);
    Double d2=Double.valueOf(1.1);
    System.out.println(d1==d2);//false

    包装类的方法


    1. 将字符串转换为基本类型数据  Integer.parseInt( String  str );  Double.parseDouble( String str )

    2. Integer提供了可以将数字转化为2进制和16进制并用字符串去描述  Integer.toBinaryString( int  i);  Integer.toHexString(int  i);

    3. 包装类常用的常量  Integer.MAX_VALUE;  Integer.MIN_VALUE;  Double.MAX_VALUE;

    4. int a=65; System.out.println(a);--->相当于 System.out.println(Integer.toString(a));

    拆装箱


    java1.5后支持了一个新的特性------>自动拆装箱

    自动装箱

    可以自动的将一个基本类型数据变成其包装类实例

    语法

    Integer a = 1;
    //
    int i = 1; 
    Integer a = i;

    自动拆箱

    可以自动将一个包装类实例转变为一个基本类型数据

    语法

    Integer i = Integer.valueOf(1); 
    int a = i;//自动拆箱

    手动装箱

    Integer c = Integer.valueOf(3);
    Integer i = new Integer(1);

    手动拆箱

    Integer i = Integer.valueOf(1);
    int a = i.intValue();  

    BigDecimal


    java中的double/float在计算时会有舍入误差。要想得到更加精确的结果,可以使用该类。

    java.math.BigDecimal

    BigDecimal用于计算更精确的小数,同时也可以表示一个很精确的小数。

    使用一个BigDecimal实例来表示一个精确的小数,构造方法通常传入一个可以描述该小数的字符串。

    该类定义了运算方法 + - * /

    add()         用当前浮点数加上另一个浮点数

    subtract()   减法

    multiply()    乘法

    divide()      除法

    BigDecimal num1 = new BigDecimal("3.0");

    BigDecimal num2 = new BigDecimal("2.9");

    除法要注意,通常我们会使用除法的重载方法。添加舍入模式。(四舍五入)

    若不添加这项,那么再遇到两个数相除商为无限小数时,会一致除下去,直到报错。

    b1.divide(b2);//报错

    BigDecimal b3=b1.divide(b2, 9, BigDecimal.ROUND_HALF_UP);//表示保留9位有效数字

    BigInteger


    java.math.BigInteger用来描述更长位数的整数。也支持加减乘数,用法和BigDecimal一样。BigInteger的存储范围理论上只受内存容量限制。

    案例:

    BigInteger num1 = new BigInteger("123");

    BigInteger num2 = BigInteger.valueOf(1);

    求200的阶乘

    BigInteger num = new BigInteger("1");
    for(int i = 2;i<=200;i++){
        num = num.multiply(BigInteger.valueOf(i));
    }
    System.out.println(num);
  • 相关阅读:
    caffe常用层: batchNorm层和scale层
    简述configure、pkg-config、pkg_config_path三者的关系
    python删除list中元素的三种方法
    Leetcode 872. Leaf-Similar Trees
    Leetcode 508. Most Frequent Subtree Sum
    Leetcode 572. Subtree of Another Tree
    Leetcode 894. All Possible Full Binary Trees
    Leetcode 814. Binary Tree Pruning
    Leetcode 557. Reverse Words in a String III
    python 多维list声明时的小问题
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6627981.html
Copyright © 2011-2022 走看看