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);
  • 相关阅读:
    远程连接Oracle 服务器 解决Oracle查询中文乱码
    sql 复杂查询 以teacher student course多对多关系为例
    ZooKeeper 分布式锁实现
    zookeeper原理解析-客户端与服务器端交互
    zookeeper原理解析-服务器端处理流程
    zookeeper原理解析-选举
    zookeeper原理解析-序列化
    深入浅出 Redis client/server交互流程
    zookeeper原理解析-数据存储
    RocketMQ原理解析-Remoting
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6627981.html
Copyright © 2011-2022 走看看